2011-04-19 71 views
0

我發現這個宏在C來源,我現在移植:奇怪宏觀construstion

#define Round256(p0, p1) \ 
X##p0 += X##p1; 

有在該代碼沒有變量X。任何人都可以告訴我在這種情況下做什麼符號

+0

什麼是一個愚蠢的宏,它是一個愚蠢的名字。請在您的移植代碼中刪除它,並在代碼中使用正確的'+ ='語句。 – 2011-04-19 02:52:44

回答

1

##是粘貼操作。它污染了X(字面意義上)和每個值。例如,Round256(one, two)將被轉換爲Xone += Xtwo

3

##以文本方式將兩個字符串附加在一起。

在你的榜樣

所以,如果叫如下:

Round256(one, two) 

將被翻譯成:

Xone += Xtwo; 
2

宏只是stringizes值

假設它被稱爲像這樣

Round256(1,2) 

這將預處理器作爲

X1 += X2 

這似乎像變量X1擴展.. .n某處......

## concatena一起測試字符串值。

我使用數值的原因是在宏本身的名稱。