11

我的核心问题是,当使用 Qt Creator 作为“通用”(非 Qt)项目的代码编辑器时,我如何告诉它使用 c++11 语法突出显示?

我有一个 c++11 项目,我已经做了一段时间了,我决定试试 Qt Creator。这是一个普通的 c++ 项目,带有手动编码的 makefile 等等。

Qt Creator 很好地打开了项目(“eSLIME”),并创建了三个文件:eSLIME.config、eSLIME.includes 和 eSLIME.files。它没有创建 .pro 文件。

它似乎无法识别 c++11 调用。例如,#include <unordered_set>绿色下划线“ ”,表示不存在该文件或目录。

我怀疑我应该在 .config 文件中放一些东西,但我不知道是什么,而且谷歌搜索没有帮助。我尝试附加 -std=c++0x,但没有成功。

PS:代码太破了,现在无法构建,这就是我切换到 IDE 的原因。

4

2 回答 2

13

这个问题和答案已经过去了 2 年,但Qt Creator(至少对于 linux)没有任何改变:即使是最新版本(现在是 3.5)也无法解析 C++11 头文件。

问题是,默认情况下__cplusplus,在内部Qt Creator解析器中定义为小于 201103L 的某个值,在 STL 头文件中有很多对该宏的检查,如下所示:

#if __cplusplus < 201103L
#include <bits/c++0x_warning.h>
// disable all tasty functionality
#endif

首先,我尝试在*.config中添加以下行:

#define __cplusplus 201103L

没啥事儿。

经过一番调查,我终于找到了正确的解决方案:只需在*.config中写入:

#define __cplusplus 201103

神奇的是,一切都变得鲜活了!

于 2015-08-27T11:20:29.727 回答
1

Qt 5.0.2 支持任何 c++ 文件的 c++11 语法然后

只需下载QT 5.0.2(包括 Qt Creator 2.7.0)。

于 2013-06-05T16:02:34.557 回答