私はC++で別のマクロを定義するためにマクロを使いたいです。マクロが定義するマクロには2つの引数があり、1つは "#ifdef"テストを実行するマクロの名前、もう1つは#defineの新しいマクロの名前です。この例は省かれています。実際の状況は複雑なので、私はそれを除外したいのです。C++では、引数をマクロ名として使用してマクロを定義するマクロを使用できますか?
#define TEST_ME // or NOT
#define DEFINE_A_MACRO(_test_me_, _define_me_) \
\
#ifdef (actual value of)_test_me_ \
#define (actual value of _define_me_) One Thing \
#else \
#define (actual value of _define_me_) Another Thing \
#endif
...
DEFINE_A_MACRO(TEST_ME, DEFINE_ME)
これを実行する方法はありますか? 私はそれを疑うかもしれませんが、質問をする可能性もあります。
マクロ展開は、プリプロセッサディレクティブを含めることはできません。 –
#defineマクロで#記号をエスケープしますか? と同じ質問ではありません。 "はい"と答えると、マクロでハッシュ記号をエスケープできます。 しかし、回答の1つがマクロの内容を "再スキャン"してプリプロセッサディレクティブ。この質問には、答えはいいえ - これは検索で得られる可能性が高いと言われる方法です。 – peterk