3

マクロ展開内のマクロの名前を文字列として使用したい。

例:

#define DEBUG_TEST(a, ...) printf("DEBUG_TEST::%s (%d) : " a, __FUNCTION__, __LINE__, ##__VA_ARGS__)

エクスパンションで「DEBUG_TEST」をもう必要としないものに変更したいが、次のようなもの:

#define DEBUG_TEST(a, ...) printf(__MACRO__ "::%s (%d) : " a, __FUNCTION__, __LINE__, ##__VA_ARGS__)

もちろん、私の例では__ MACRO __は存在しません...

4

1 に答える 1

4

これは不可能だと思います。私の提案は、マクロの名前を引数として取る別のマクロを作成することです。次に、このマクロを他のマクロで使用します。

于 2012-10-11T11:38:57.353 に答える