2011-07-11 90 views
3

可能重複:
Macro expansion in C++
What is the purpose of the ## operator in C++, and what is it called?什麼是 「##」 的符號意味着在C++

什麼是 「##」 的符號意味着在C++?我在閱讀某人的源代碼時遇到了這個問題。更具體地說,這個陳述意味着什麼:

if (v > ## = 0.1 * threshold) 
+1

我以前看過這個..它是重複 – 2011-07-11 01:07:43

+0

@ 0A0D:我可以把那在我的牆上。 –

+0

@Tomalak::) Google不友好於## ..很難搜索這一個 – 2011-07-11 01:11:06

回答

7

#define宏,##是一個預處理記號,這表示向周邊兩個東西粘在一起。因此,假如你#define內看到了這一點,它是寫

if (v >= 0.1 * threshold) 

如果你已經替代內容要麼>=,這不是很奇怪這樣一個非常奇怪的方式。只是一個有點奇怪的技巧。

+3

只有當代碼是宏定義的一部分時。在這個問題中沒有證據。 –

+0

([它必須是宏定義的一部分](http://www.ideone.com/BeAbn)。) –

+0

@Tomalak:是的。將編輯。 – aschepler

1

這意味着什麼。這是一個錯誤。

是否確定##之後的代碼不是註釋,並且在下一個隨後的行中沒有正確地繼續執行條件?

或者,您粘貼的代碼可能是構成宏定義的一行的一部分(但您未顯示任何證據,因此我不會在此回答該問題的其他問題)。

(你看背景下這樣的問題事項?如何)

1

##告訴cpp將它們之前和之後的標記粘貼在一起。在這種情況下,我不得不猜測出於某種原因,程序員需要避免擁有一個實際的>=標記,以避免混淆其他預處理器(文檔生成器或其他),因此cpp從其組件中組裝>=