【发布时间】:2012-05-20 20:07:56
【问题描述】:
如果定义了 unicode,则 TEXT("x") 宏如何扩展为 L"x",如果未定义 unicode,则扩展为 "x",因为当我尝试编译以下代码时,它会显示“错误 #1049:语法错误在宏参数中。”
#define T("x") "x"
int main()
{
}
【问题讨论】:
-
上面的代码即使编译了也不会做任何事情;这里的意图是什么?
如果定义了 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
【讨论】: