【发布时间】:2018-08-10 11:35:35
【问题描述】:
我正在尝试将我们的解决方案从 VS2010 移植到 VS2017,并且在涉及令牌粘贴运算符的宏定义中遇到了这个编译错误。下面是代码
#include “stdafx.h”
#define TEST_MACRO(str) \
{ \
_T(“Error”) ## str ## _T(“\””); \
}
int main()
{
TEST_MACRO(“ check “);
return 0;
}
这在 VS2010 中编译良好,但在 VS2017/VS2015 中失败。它似乎无法识别 str ## 之后的 _T(“\””)。我使用的是“多字节字符集”,因此 _T(x) 解析为 x(在 tchar.h 中)。
谁能帮我理解这个问题?
【问题讨论】:
-
你用什么
_T? -
是因为您使用的是“ char - 替换为” 另外您可能需要为 _T #include
-
这个宏到底有什么意义?你尝试得到什么?
-
@Bathsheba - 为微软说这个。这是标准的 Windows 宏。存在大量其他此类(前导下划线后跟大写字母)宏和符号
-
@RbMm:只要您不自己定义它就可以了。是的,没有仔细阅读问题中的代码。我的错。
标签: c++ visual-c++ c++14 preprocessor