[問題] 請問關於TEXT()

看板C_and_CPP作者 (雞卷)時間15年前 (2010/05/17 17:51), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
比如說使用 MessageBox()的時候像 MessageBox(NULL, TEXT("YOU SHALL NOT PASS"), "WARING", MB_OK); 跟 MessageBox(NULL, "YOU SHALL NOT PASS", "WARING", MB_OK); 兩者之間差別在哪呢?其中的TEXT()作用為何? 查了一下資料發現TEXT定義在 winnt.rh 中,程式碼如下 #ifdef UNICODE #define __TEXT(quote) L##quote #else /* UNICODE */ #define __TEXT(quote) quote #endif /* UNICODE */ #define TEXT(quote) __TEXT(quote) 它是說如果有定義 UNICODE 的話,字串就會變成 LYOU SHALL NOT PASS 否則為 YOU SHALL NOT PASS 這樣嗎? 所以是說如果沒有定義 UNICODE 的話, MessageBox(NULL, TEXT("YOU SHALL NOT PASS"), "WARING", MB_OK); 和 MessageBox(NULL, YOU SHALL NOT PASS", "WARING", MB_OK); 是相同的結果囉? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.249.2.10

05/17 18:27, , 1F
是 L"String" 和 "String"
05/17 18:27, 1F

05/17 18:28, , 2F
前者是 unicode 常數字串 後者則是 "ANSI" 編碼字串
05/17 18:28, 2F

05/17 18:29, , 3F
另外注意 L"String" 的型態是 wchar_t
05/17 18:29, 3F

05/17 18:44, , 4F
如果使用TEXT,但卻沒定義UNICODE的話,也是ANSI字串嗎?
05/17 18:44, 4F

05/17 18:49, , 5F
對 那就是在你想要一支程式編兩種時
05/17 18:49, 5F

05/17 18:49, , 6F
只要調個編譯器選項就全部幫你調好用的
05/17 18:49, 6F
文章代碼(AID): #1ByH6TIh (C_and_CPP)