“##”符号在C ++中的含义是什么

时间:2011-07-11 00:59:26

标签: c++

  

可能重复:
  Macro expansion in C++
  What is the purpose of the ## operator in C++, and what is it called?

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

if ( v > ## = 0.1 * threshold )

4 个答案:

答案 0 :(得分:7)

#define宏中,##是一个预处理程序令牌,它表示将周围的两个东西粘贴在一起。所以假设你在#define内看到了这一点,这是一种非常奇怪的写作方式

if ( v >= 0.1 * threshold )

如果您已经取代了>=,那就不那么奇怪了。只是一个有点奇怪的技巧。

答案 1 :(得分:2)

答案 2 :(得分:1)

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

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

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

(你看到 context 在这样的问题中如何重要?)

答案 3 :(得分:1)

##告诉cpp将令牌前后粘贴在一起。在这种情况下,我不得不猜测由于某种原因,程序员需要避免使用实际的>=令牌,可能是为了避免混淆其他预处理器(文档生成器或其他任何东西),因此cpp汇编来自其组件的>=