可能重复:
Macro expansion in C++
What is the purpose of the ## operator in C++, and what is it called?
“##”符号在C ++中的含义是什么?我在阅读某人的源代码时偶然发现了它。更具体地说,这句话意味着什么:
if ( v > ## = 0.1 * threshold )
答案 0 :(得分:7)
在#define
宏中,##
是一个预处理程序令牌,它表示将周围的两个东西粘贴在一起。所以假设你在#define
内看到了这一点,这是一种非常奇怪的写作方式
if ( v >= 0.1 * threshold )
如果您已经取代了>
或=
,那就不那么奇怪了。只是一个有点奇怪的技巧。
答案 1 :(得分:2)
答案 2 :(得分:1)
没有任何意义。这是一个错误。
您确定##
之后的代码不是评论,并且条件在下一行中没有正确继续吗?
或者,您粘贴的代码可能是构成宏定义的行的一部分(但您没有显示任何证据,因此我不会在此处回答不同的问题)。
(你看到 context 在这样的问题中如何重要?)
答案 3 :(得分:1)
##
告诉cpp
将令牌前后粘贴在一起。在这种情况下,我不得不猜测由于某种原因,程序员需要避免使用实际的>=
令牌,可能是为了避免混淆其他预处理器(文档生成器或其他任何东西),因此cpp
汇编来自其组件的>=
。