"##"符号在C++中是什么意思

what does "##" symbol mean in C++

本文关键字:是什么 意思 符号 C++      更新时间:2023-10-16

可能的重复:
C++中的宏扩展
C++中##运算符的用途是什么?它叫什么?

"##"符号在C++中是什么意思?我在阅读某人的源代码时偶然发现了它。更具体地说,这句话的意思是什么:

if ( v > ## = 0.1 * threshold )

#define宏中,##是一个预处理器标记,表示将周围的两个东西粘贴在一起。因此,假设您在#define中看到了这一点,这是一种非常奇怪的编写的方式

if ( v >= 0.1 * threshold )

如果你已经换了>=,那就没那么奇怪了。只是一个有点奇怪的把戏。

这是一个预处理器令牌:

http://msdn.microsoft.com/en-us/library/09dwwt6y%28v=vs.80%29.aspx

它没有任何意义。这是一个错误。

您确定##之后的代码不是注释,并且条件在下一行中没有正确继续吗?

或者,你粘贴的代码可能是构成宏定义的一行的一部分(但你没有显示任何证据,所以我不会在这里回答不同的问题(。

(你看到上下文在这样的问题中是如何重要的吗?(

##告诉cpp将其前后的令牌粘贴在一起。在这种情况下,我不得不猜测,出于某种原因,程序员需要避免使用实际的>=令牌,可能是为了避免混淆其他预处理器(文档生成器或其他什么(,因此cpp必须从其组件中组装>=