我的计算机上安装了两个版本的C++编译器。其中一个可以识别__COUNTER__宏,另一个不能。在做了一些研究以使程序在这两种环境下都能编译之后,我还没有遇到__COUNTER__的宏定义。这是由编译器完成的特殊宏,还是我可以将__COUNTER__的定义复制到源代码中?如果我可以复制它,我需要什么代码?
__COUNTER__
sxissh061#
__COUNTER__是一个内置在几个常见编译器中的。无法手动定义。如果你被一个不支持它的编译器卡住了,你最好的选择可能是在将代码送入编译器之前,通过一个支持它的预处理器运行你的代码。
wz3gfoph2#
这是一个特殊的宏,它是由Visual Studio引入的,我想现在GCC也支持它。它基本上提供了一个唯一的整数计数器,可用于生成唯一的标识符。GCC release notes:添加了一个新的预定义宏__COUNTER__。它扩展为从0开始的连续整数值。与##运算符结合使用,这提供了一种生成唯一标识符的方便方法。如果编译器无法使用它,那么可以很容易地用静态变量来模拟它的行为。但是我不确定你在编译什么,所以我不确定这个计数器在你现有的代码中是如何使用的。
##
2条答案
按热度按时间sxissh061#
__COUNTER__
是一个内置在几个常见编译器中的。无法手动定义。如果你被一个不支持它的编译器卡住了,你最好的选择可能是在将代码送入编译器之前,通过一个支持它的预处理器运行你的代码。wz3gfoph2#
这是一个特殊的宏,它是由Visual Studio引入的,我想现在GCC也支持它。
它基本上提供了一个唯一的整数计数器,可用于生成唯一的标识符。
GCC release notes:
添加了一个新的预定义宏
__COUNTER__
。它扩展为从0开始的连续整数值。与##
运算符结合使用,这提供了一种生成唯一标识符的方便方法。如果编译器无法使用它,那么可以很容易地用静态变量来模拟它的行为。但是我不确定你在编译什么,所以我不确定这个计数器在你现有的代码中是如何使用的。