ホームページ >バックエンド開発 >C++ >C/C マクロで文字列リテラルを直接連結するにはどうすればよいですか?

C/C マクロで文字列リテラルを直接連結するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-20 14:50:16960ブラウズ

How Can I Directly Concatenate String Literals in C/C   Macros?

C/C マクロでの文字列の連結

文字列リテラルを使用してマクロを定義する場合、多くの場合、それらを連結して新しい文字列を形成する必要があります。例を考えてみましょう:

#define STR1      "s"
#define STR2      "1"
#define STR3      STR1 ## STR2

疑問が生じます:単一のマクロ定義を使用して STR1 と STR2 を直接連結して "s1" を取得することは可能ですか?

標準文字列連結

伝統的に、マクロ内の文字列の連結は文字列化演算子 (#) を利用して実現されます。ただし、この方法では中間マクロ関数に引数を渡す必要があります。

#define CONCAT(x, y) x ## y
#define STR3 CONCAT(STR1, STR2)

文字列の簡素化された連結

文字列リテラルを連結する特定のケースについては、簡略化されたアプローチが存在します。文字列化演算子を省略すると、文字列を直接連結できます:

#define STR3 STR1 STR2

これは次のように展開されます:

#define STR3 "s" "1"

C 言語では、文字列をスペースと並べて (「s」のように) "1") は、単一の文字列 "s1" を持つことと同等です。したがって、この簡素化された方法は、C/C マクロで文字列リテラルを連結する直接的な方法を提供します。

以上がC/C マクロで文字列リテラルを直接連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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