VS2017+Qt5.12 编译报错E2512 功能测试宏的参数必须是简单标识符 的解决方法

1 出现的问题

在搭建好vs2017+qt环境后新建一个qt 空的项目时,编译运行,可以正常运行程序,窗口出现,如下图所示
VS2017+Qt5.12 编译报错E2512 功能测试宏的参数必须是简单标识符 的解决方法_第1张图片
但是编译产生错误,经过查阅猜测这个错误是因为VS的智能感知IntelliSense引起的,下面是两个解决方案

2 解决方案

2.1 方法1

生成+IntelliSense 更改为 仅生成,如下图所示,但这样总觉得没有解决问题,经过查阅得到了下面更好的 方法2VS2017+Qt5.12 编译报错E2512 功能测试宏的参数必须是简单标识符 的解决方法_第2张图片
VS2017+Qt5.12 编译报错E2512 功能测试宏的参数必须是简单标识符 的解决方法_第3张图片

2.2 方法2

我们点击这个错误可以定位到出问题的代码,如下图所示
VS2017+Qt5.12 编译报错E2512 功能测试宏的参数必须是简单标识符 的解决方法_第4张图片
这里先贴上解决方法原贴的链接
解决方法帖子
https://forum.qt.io/topic/93711/problem-with-new-visual-studio-update-2017-version-15-8-0-and-qt-5-9-5/20
其中解决方法在 Taytoo 2019年1月31日 下午6:34 处,见下图
VS2017+Qt5.12 编译报错E2512 功能测试宏的参数必须是简单标识符 的解决方法_第5张图片
解决方法是在这个头文件中把代码修改一下即可,代码如下

#if defined(__cplusplus)
#if defined(__clang__)
#if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
#    define Q_FALLTHROUGH() [[clang::fallthrough]]
#endif
#elif defined(__GNUC__)
#if QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
#    define Q_FALLTHROUGH() [[gnu::fallthrough]]
#endif
#elif QT_HAS_CPP_ATTRIBUTE(fallthrough)
#  define Q_FALLTHROUGH() [[fallthrough]]
#endif
#endif

修改后错误消失了,如下图
VS2017+Qt5.12 编译报错E2512 功能测试宏的参数必须是简单标识符 的解决方法_第6张图片
这样看着舒服了许多,不知道是不是彻底解决了问题

你可能感兴趣的:(VS2017+Qt5.12 编译报错E2512 功能测试宏的参数必须是简单标识符 的解决方法)