【问题标题】:Preprocessor counter macro预处理器计数器宏
【发布时间】: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


    【解决方案1】:

    GCC 和(我相信)VC++ 都提供了__COUNTER__ 宏,它可以满足您的期望。我不知道它是否完全遵循标准,但它可能已经足够接近实际使用了。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 2015-04-15
    • 1970-01-01
    • 2010-09-19
    • 2020-02-09
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多