我發現這個宏在C來源,我現在移植:奇怪宏觀construstion
#define Round256(p0, p1) \
X##p0 += X##p1;
有在該代碼沒有變量X。任何人都可以告訴我在這種情況下做什麼符號#?
我發現這個宏在C來源,我現在移植:奇怪宏觀construstion
#define Round256(p0, p1) \
X##p0 += X##p1;
有在該代碼沒有變量X。任何人都可以告訴我在這種情況下做什麼符號#?
##
是粘貼操作。它污染了X(字面意義上)和每個值。例如,Round256(one, two)
將被轉換爲Xone += Xtwo
。
##
以文本方式將兩個字符串附加在一起。
所以,如果叫如下:
Round256(one, two)
將被翻譯成:
Xone += Xtwo;
宏只是stringizes值
假設它被稱爲像這樣
Round256(1,2)
這將預處理器作爲
X1 += X2
這似乎像變量X1擴展.. .n某處......
##
concatena一起測試字符串值。
我使用數值的原因是在宏本身的名稱。
什麼是一個愚蠢的宏,它是一個愚蠢的名字。請在您的移植代碼中刪除它,並在代碼中使用正確的'+ ='語句。 – 2011-04-19 02:52:44