C/C でのマクロベースの文字列連結
C/C でマクロ定義された文字列を直接連結することは、## を使用することはできません。プリプロセッサ演算子。主にトークンの連結を目的としています。ただし、これを実現するための回避策は存在します。
次の例を考えてみましょう:
#define STR1 "s" #define STR2 "1" #define STR3 STR1 STR2
このコードは 3 つのマクロを定義しています: STR1 には文字列リテラル "s"、STR2 には "1"、 STR3 は STR1 と STR2 の連結です。 STR3 を展開すると、次のようになります。
#define STR3 "s" "1"
ただし、C 言語では、空白で区切られた 2 つの文字列の並置 (「s」「1」など) は 1 つの文字列「s1」と同等です。 .
したがって、次のコードは ## を必要とせずに STR1 と STR2 を直接連結します。演算子:
#define STR3 STR1 STR2
これは次のように展開されます:
#define STR3 "s1"
以上が演算子を使用せずに C/C でマクロ定義された文字列を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。