如果定义了 unicode,则 TEXT("x") 宏如何扩展为 L"x",如果未定义 unicode,则扩展为 "x",因为当我尝试编译以下代码时,它会显示“错误 #1049:宏参数中的语法错误。”
#define T("x") "x"
int main()
{
}
在您的安装中查找tchar.h
标题。你会得到类似下面的东西:
#define __T(x) L ## x
在 Unicode 模式下,上述宏将一个L
和一个字符串参数粘贴在一起。在 ASCII 模式下,没有要粘贴的前缀,所以它很简单:
#define __T(x) x
请注意,您通过另一个宏_T()
(带有单个下划线)间接调用此宏,并将字符串文字作为参数传递。
#define T("x") "x"
这定义了一个宏函数,如果没有任何引号,那么T
命名的参数是什么。x
你可以尝试这样的事情:
#define T(x) #x