预处理器计数器宏

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)

Mic*_*hne 7

GCC和(我相信)VC++都提供__COUNTER__宏,它可以满足你的期望.我不知道它完全遵循标准,但它可能足够接近现实世界的使用.

  • http://stackoverflow.com/questions/652815/has-anyone-ever-had-a-use-for-the-counter-pre-processor-macro 对这个主题有一些很好的报道。 (2认同)