2012-05-20 28 views
0

如果unicode已定義,TEXT(「x」)宏如何擴展爲L「x」;如果unicode未定義,TEX如何擴展爲「x」,因爲當我嘗試編譯下面的代碼時, #1049:宏參數中的語法錯誤。「Macro擴展中的語法錯誤

#define T("x") "x" 

int main() 
{ 
} 
+0

上面的代碼即使編譯也不會執行任何操作;這裏有什麼意圖? –

回答

2

在您的安裝中查找tchar.h標頭。你會看到類似以下內容:

#define __T(x)  L ## x 

在Unicode模式下,上面的宏膏的L和字符串參數在一起。在ASCII模式下,沒有前綴粘貼如此這般簡單的:你間接調用這個宏,通過另一個宏

#define __T(x)  x 

注 - _T()(以單下劃線),並通過一個字符串作爲參數。

1
#define T("x") "x" 

定義宏功能T,並且這將是一個名爲x如果沒有發現任何報價參數。您可以嘗試這樣的代替:

#define T(x) #x