预处理器计数器宏

时间:2014-03-11 17:25:27

标签: c++ macros c-preprocessor counter

有没有办法创建一个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;
}

预期输出:

TEST0 
TEST1    

1 个答案:

答案 0 :(得分:6)

GCC,(我相信)VC ++都提供了__COUNTER__宏,它可以满足您的期望。我不知道它完全符合标准,但它可能足够接近现实世界。