0

如果定义了 unicode,则 TEXT("x") 宏如何扩展为 L"x",如果未定义 unicode,则扩展为 "x",因为当我尝试编译以下代码时,它会显示“错误 #1049:宏参数中的语法错误。”

#define T("x") "x"

int main()
{
}
4

2 回答 2

2

在您的安装中查找tchar.h标题。你会得到类似下面的东西:

#define __T(x)      L ## x

在 Unicode 模式下,上述宏将一个L和一个字符串参数粘贴在一起。在 ASCII 模式下,没有要粘贴的前缀,所以它很简单:

#define __T(x)      x

请注意,您通过另一个宏_T()(带有单个下划线)间接调用此宏,并将字符串文字作为参数传递。

于 2012-05-20T20:14:09.687 回答
1
#define T("x") "x"

这定义了一个宏函数,如果没有任何引号,那么T命名的参数是什么。x你可以尝试这样的事情:

#define T(x) #x
于 2012-05-20T20:10:29.213 回答