#define NAME(x) TEXT(x)
#define TEXT(quote) __TEXT(quote) // r_winnt
#define __TEXT(quote) quote // r_winnt
以上是來自winNT.h,不是NAME("Virtual Cam")
與"Virtual Cam"
相同,使用這個宏有什麼意義?這種類型的宏有什麼意義?
#define NAME(x) TEXT(x)
#define TEXT(quote) __TEXT(quote) // r_winnt
#define __TEXT(quote) quote // r_winnt
以上是來自winNT.h,不是NAME("Virtual Cam")
與"Virtual Cam"
相同,使用這個宏有什麼意義?這種類型的宏有什麼意義?
__TEXT
根據是否定義UNICODE
標誌來選擇宏擴展。如果不是,則只擴展到quote
,否則將在報價中附加L
,以便它變爲L"Virtual Cam"
。該字符串被解釋爲寬字符串。
取決於您的系統是否被#defined使用Unicode。然後它會自動將文字更改爲寬字面而不是字面值。
但我沒有看到上面的邏輯,它是如何發生的? – user198729 2010-08-18 12:15:04
其中「使用Unicode」表示「使用UTF-16編碼的Unicode」,因爲這是Microsoft工具和API最好支持的Unicode編碼。 – 2010-08-18 13:26:19
L'Virtual Cam「是C++的本地語法還是定義在某些頭文件中? – user198729 2010-08-18 12:39:31
我認爲這是本機C++代碼,因爲可以寫wchar_t * pwstr = L「Test」; – 2010-08-18 12:53:10
C++ ISO標準將wchar_t視爲C原生;-)。因此,L不是C++本機代碼,而是C本機代碼;-) – 2010-08-18 12:57:08