通常,我在 Qt Creator 环境中编程(目前是 4.4.1)。今天,我决定跳出平时的环境,尝试在Vim中写代码(我已经可以退出vim很长时间了:)),通过控制台构建。但这是我遇到的一个功能,无法弄清楚其中的区别。
如果您在 Qt 中编写以下代码,构建并运行它,一切都会很好:
#include <iostream>
using namespace std;
int main() {
auto x = 0;
cin >> x;
cout << x << endl;
return 0;
}
如果我们尝试通过以下命令构建相同的代码:g++ -c *.cpp
,则会出现错误:
main.cpp:6:10: error: ‘x’ does not name a type
auto x = 0;
^
main.cpp:7:12: error: ‘x’ was not declared in this scope
cin >> x;
^
请向我解释其中的区别。
gcc --version
gcc (SUSE Linux) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
只是Qt Creator本身在pro文件中通过“CONFIG += c++11”这行添加了对C++11的支持。并且手动调用 g++ 时,必须明确设置对新标准的支持。它是 -std= ... 有关此选项的详细信息,请参阅 man gcc。通常这是“c++11”(-std=c++11)