ホームページ >バックエンド開発 >C++ >演算子を使用せずに C/C でマクロ定義された文字列を連結するにはどうすればよいですか?

演算子を使用せずに C/C でマクロ定義された文字列を連結するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-07 06:32:18646ブラウズ

How Can I Concatenate Macro-Defined Strings in C/C   Without the  Operator?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。