假设我们定义了一个宏:
#define FOO 42
是否可以定义宏
#define SHIELD(x) // <- your code here
使得
SHIELD(FOO)
扩展到FOO而不是42?
FOO
42
oo7oh9g91#
这并没有直接解决您的问题,但是假设您希望在定义FOO之后能够以某种其他方式使用它,然后恢复原始定义,我能想到的唯一技巧是利用push_macro pragma,MSVC和GCC可能都支持它,但我建议验证它。
push_macro
#define FOO 42 #pragma push_macro("FOO") #undef FOO // some stuff involving FOO #pragma pop_macro("FOO")
我不知道这是否有助于你手头的特定情况,但值得知道这样的可能性存在..
1条答案
按热度按时间oo7oh9g91#
这并没有直接解决您的问题,但是假设您希望在定义
FOO
之后能够以某种其他方式使用它,然后恢复原始定义,我能想到的唯一技巧是利用push_macro
pragma,MSVC和GCC可能都支持它,但我建议验证它。我不知道这是否有助于你手头的特定情况,但值得知道这样的可能性存在..