C ++ __COUNTER__定义

时间:2013-12-25 01:40:59

标签: c++ macros c-preprocessor

我的计算机上安装了两个版本的c ++编译器。其中一个识别__COUNTER__宏,另一个不识别。在做了一些研究以使程序在两者中编译后,我还没有遇到__COUNTER__的宏定义。这是编译器完成的一些特殊的宏,还是可以将__COUNTER__的定义复制到我的源代码中,如果我可以复制它我需要的代码是什么。

2 个答案:

答案 0 :(得分:10)

__COUNTER__是几个常见编译器的内置函数。无法手动定义。如果您坚持使用不支持它的编译器,那么最好的选择可能是通过支持它的预处理器运行代码,然后再将其提供给编译器。

答案 1 :(得分:0)

这是一个由Visual Studio引入的特殊宏,我认为它现在也得到了GCC的支持。

它基本上提供了一个唯一的计数器,而不是整数,可用于生成唯一标识符。

来自GCC release notes

  

添加了新的预定义宏__COUNTER__。它扩展为从0开始的顺序积分值。结合##运算符,这提供了生成唯一标识符的便捷方法。

如果编译器没有它,您可以使用静态变量轻松模仿行为。但我不确定你在编译什么,所以我不确定这个计数器是如何在你可用的代码中使用的。