C/C マクロによる文字列の連結
C および C では、マクロは定数を定義し、事前実行中にテキスト置換を実行する便利な方法を提供します。 -処理。次のように定義された 2 つのマクロ STR1 と STR2 があるとします。
#define STR1 "s" #define STR2 "1"
STR1 と STR2 を連結して「s1」を取得したいとします。目的の文字列を生成する単一のマクロでこれを行う簡単な方法はありますか?
直接的なアプローチ
コード内のトークンとは異なり、マクロはプリプロセッサによって処理されます。コンパイル前。したがって、「 」のような演算子を使用して文字列をマクロと直接連結することはできません。ただし、特定の構文によっては、これを実現できる場合があります。
この場合、C では、マクロ展開中に空白で区切られた文字列リテラルを連結できます。 STR3 定義を次のように変更すると、目的の結果を得ることができます。
#define STR3 STR1 STR2
これは次のように展開されます。
#define STR3 "s" "1"
C では、2 つの文字列を空白で区切ることは、単一の文字列。したがって、STR3 は文字列 "s1" に展開されます。
代替アプローチ
シナリオで直接的なアプローチが機能しない場合、代替方法には、プリプロセッサ条件を使用するか、渡すことが含まれます。連結を実行する親マクロへの引数。これらのアプローチはより複雑になる可能性がありますが、さまざまな状況でより柔軟に対応できます。
以上がC/C マクロを使用して文字列を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。