#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