我升级了C/C++的Sublime Text 3,但是我必须在C11和C++ 11等现代版本中编写代码。崇高文本中的C11和C++ 11问题3
当我尝试C11这样的代码:
#include <stdio.h>
int main(int argc, char ** argv)
{
puts("C99 Version:");
for(int i = 0; argv[i]; i++) {
printf("%d: %s\n", i, argv[i]);
}
getchar();
return 0;
}
崇高给出了一个错误:
C:\Users\pc\Desktop\CPPproject\c99.c:7:2: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
for(int i = 0; argv[i]; i++) {
^
C:\Users\pc\Desktop\CPPproject\c99.c:7:2: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
你能解释我如何使用-std = C99,-std = gnu99,-std = c11或-std = gnu11选项?
============================================== ====================================
与C++ 11一样的东西。下面是代码:
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main(int argc, char ** argv) {
stringstream version;
version << "GCC version: "
<< __GNUC__ << "." << __GNUC_MINOR__ << "." << __GNUC_PATCHLEVEL__
<< "\nVersion string: " << __VERSION__;
cout << version.str() << endl;
vector<string> v = { "one", "two", "three" }; // C++11 feature - initializer list
for(string s : v) { // C++11 feature - range-based for loop
cout << s << endl;
}
return 0;
}
和错误的列表:
C:\Users\pc\Desktop\CPPproject\main.cpp: In function 'int main(int, char**)':
C:\Users\pc\Desktop\CPPproject\main.cpp:17:45: error: in C++98 'v' must be initialized by constructor, not by '{...}'
vector<string> v = { "one", "two", "three" }; // C++11 feature - initializer list
^
C:\Users\pc\Desktop\CPPproject\main.cpp:17:45: error: could not convert '{"one", "two", "three"}' from '<brace-enclosed initializer list>' to 'std::vector<std::basic_string<char> >'
C:\Users\pc\Desktop\CPPproject\main.cpp:19:18: error: range-based 'for' loops are not allowed in C++98 mode
for(string s : v) { // C++11 feature - range-based for loop
^
帮我解决这些问题,请!
另一个问题:当我运行代码 - .exe文件出现在源代码相同的文件夹中,我必须打开它。当我点击“ctrl + b”时,是否有可能看到Sublime Text内的输出?
谢谢!!!
崇高的文本本身不具有编译器或语法检查器,它必须是你已经安装了一个模块中。检查该模块的配置文件。 –
@JoachimPileborg误导人。这是一个可以在不安装任何东西的情况下轻松解决的问题。 Sublime Text确实具有构建系统(即在文件或项目上运行的命令)。 Luchnik只需要配置它们。在ST3构建系统上的 – Rapptz
[这里是文档](http://docs.sublimetext.info/en/latest/reference/build_systems.html)。为每个包含适当的“-std”标志的C和C++创建一个新的。 – Praetorian