宏扩展中的语法错误

时间:2012-05-20 20:07:57

标签: c++ c macros

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

#define T("x") "x"

int main()
{
}

2 个答案:

答案 0 :(得分:2)

在您的安装中查找tchar.h标头。你会得到以下内容:

#define __T(x)      L ## x

在Unicode模式下,上面的宏将L和字符串参数粘贴在一起。在ASCII模式下,没有要粘贴的前缀,因此它简单地表示为:

#define __T(x)      x

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

答案 1 :(得分:1)

#define T("x") "x"

它定义了一个宏函数T,如果没有引号,它将是一个名为x的参数。你可以尝试这样的事情:

#define T(x) #x