预处理器计数宏

6
有没有办法创建一个遵循 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    
1个回答

7

GCC和VC++(我相信)都提供了__COUNTER__宏,它的作用大致如你所料。我不确定它是否完全遵循标准,但在实际应用中足够接近标准。


2
这个链接https://dev59.com/BnRB5IYBdhLWcg3wWGAH 在这个主题上提供了一些很好的解答。 - mah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接