Vit*_*meo 6 c++ macros counter c-preprocessor
有没有办法创建一个COUNTER()宏(遵循C++ 11/14标准),它被扩展为每次COUNTER()调用时增加1的数字?
我已经考虑过了,但却找不到让它发挥作用的方法.我没有找到在COUNTER()宏中存储"状态"的方法.
例:
#define COUNTER() <...> // Implementation goes here...
#define UNIQUE_NAME_1() TEST ## COUNTER()
#define UNIQUE_NAME_2() TEST ## COUNTER()
// Note how the COUNTER() macro can be used with other macros
// (it cannot be implemented with C++ code)
int main() {
std::cout << STRINGIFY(UNIQUE_NAME_1()) << std::endl;
std::cout << STRINGIFY(UNIQUE_NAME_2()) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
TEST0
TEST1
Run Code Online (Sandbox Code Playgroud)
GCC和(我相信)VC++都提供__COUNTER__宏,它可以满足你的期望.我不知道它完全遵循标准,但它可能足够接近现实世界的使用.