我有一個字符串的宏如下:結合寬字符串字面量字符串宏
#define APPNAME "MyApp"
現在我想通過做一些像使用宏來構造一個寬字符串:
const wchar_t *AppProgID = APPNAME L".Document";
但是,這會生成「連接不匹配的字符串」編譯錯誤。
有沒有辦法將APPNAME宏轉換爲寬字符串?
我有一個字符串的宏如下:結合寬字符串字面量字符串宏
#define APPNAME "MyApp"
現在我想通過做一些像使用宏來構造一個寬字符串:
const wchar_t *AppProgID = APPNAME L".Document";
但是,這會生成「連接不匹配的字符串」編譯錯誤。
有沒有辦法將APPNAME宏轉換爲寬字符串?
你嘗試
#define APPNAME "MyApp"
#define WIDEN2(x) L ## x
#define WIDEN(x) WIDEN2(x)
const wchar_t *AppProgID = WIDEN(APPNAME) L".Document";
注:的C++ 0x有這種情況下,新的「做正確的事」的規則。 §2.14.5/ 13:「如果一個字符串文字沒有編碼前綴,它將被視爲與其他操作數具有相同編碼前綴的字符串文字。」 – Potatoswatter 2011-08-09 11:22:02