【发布时间】:2014-03-11 17:25:27
【问题描述】:
有没有办法创建一个 COUNTER() 宏(遵循 C++11/14 标准),每次调用 COUNTER() 时,该宏都会扩展为一个加一的数字?
我已经考虑过了,但找不到使它起作用的方法。我没有找到在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
【问题讨论】:
标签: c++ macros c-preprocessor counter