C++ 控制台投掷;花括号初始化错误
当我运行此hello world函数时:C++ 控制台投掷;花括号初始化错误,c++,visual-studio-code,C++,Visual Studio Code,当我运行此hello world函数时: #include <iostream> /* welcome to your first c++ tutorial! Congrats lets have some fun :) */ int main() { std::cout << "hello world\n"; int e{ 2 }; std::cout << e; return 0; } 我是C++
#include <iostream>
/*
welcome to your first c++ tutorial! Congrats lets have some fun :)
*/
int main() {
std::cout << "hello world\n";
int e{ 2 };
std::cout << e;
return 0;
}
我是C++的超级NoOB,所以我迷路了。知道它是什么吗?也许您的编译器比较旧,没有为c++11或更高版本进行设置。你可以试试: g++main.cpp-o main-std=c++11 请在此处查看相同的代码: 下面是运行相同的代码-std=c++98:带有您看到的错误 更新 由于上述链接将来可能会停止工作,因此输出如下: 根据gcc 4.1.2进行编译:
<source>: In function 'int main()':
<source>:9: error: a function-definition is not allowed here before '{' token
<source>:10: error: 'e' was not declared in this scope
Compiler returned: 1
使用gcc 10.2编译,编译器标志为-std=c++98:
<source>: In function 'int main()':
<source>:9:10: warning: extended initializer lists only available with '-std=c++11' or '-std=gnu++11'
9 | int e{ 2 };
| ^
ASM generation compiler returned: 0
<source>: In function 'int main()':
<source>:9:10: warning: extended initializer lists only available with '-std=c++11' or '-std=gnu++11'
9 | int e{ 2 };
| ^
Execution build compiler returned: 0
Program returned: 0
hello world
2
可能您的编译器比较旧,没有针对c++11或更高版本进行设置。你可以试试: g++main.cpp-o main-std=c++11 请在此处查看相同的代码: 下面是运行相同的代码-std=c++98:带有您看到的错误 更新 由于上述链接将来可能会停止工作,因此输出如下: 根据gcc 4.1.2进行编译:
<source>: In function 'int main()':
<source>:9: error: a function-definition is not allowed here before '{' token
<source>:10: error: 'e' was not declared in this scope
Compiler returned: 1
使用gcc 10.2编译,编译器标志为-std=c++98:
<source>: In function 'int main()':
<source>:9:10: warning: extended initializer lists only available with '-std=c++11' or '-std=gnu++11'
9 | int e{ 2 };
| ^
ASM generation compiler returned: 0
<source>: In function 'int main()':
<source>:9:10: warning: extended initializer lists only available with '-std=c++11' or '-std=gnu++11'
9 | int e{ 2 };
| ^
Execution build compiler returned: 0
Program returned: 0
hello world
2
可能是过时的编译器,或者根本没有按照正确的标准编译。可能是过时的编译器,或者根本没有按照正确的标准编译。@user4581301啊,我不知道,谢谢-我会把它们贴上去-尽管这个问题是因为某种原因而结束的,我不太明白:或者打字错误或不可复制的完整信息包括,或者至少用来包括,一些类似的东西,或者这个问题在某种程度上得到了回答,这对未来的提问者不会有帮助。正是您添加的示例所增加的价值使这个答案值得一投。@user4581301这很奇怪-听起来问题已经结束了,因为答案可能已经过时了更新了输出以显示一些变化-使用与OP postedI完全相同的代码。我是最接近的投票者之一。大约在您回答并打算尝试g++main.cpp-o main-std=c++11评论的同时,我投票了,但您的回答涵盖了它以及更多内容。通常,像这样的问题需要关闭,因为它吸引了垃圾答案和本应是评论的一行。你的答案很少有人考虑过。不用担心。保护取决于mods,而不是社区行动。社区比mods多得多。在我看来,有很多完全合理的问题会得到简洁或垃圾的答案。结束一个问题不是惩罚。通常,这是对问题的辩护,这样当问题被清理、澄清或其他任何需要的时候,它就不会被埋在垃圾里。保护可能在这里起作用,但这个问题还有多少方法可以回答?不管你做什么,他们都会用正确的标准版本来编译代码。@user4581301啊,我不知道,谢谢-我会发布它们-尽管这个问题因为某种原因而结束了,我不太明白:或者输入错误的完整信息或不可复制的关闭包含,或者至少用于包含,类似的事情或问题在某种程度上得到了回答,对未来的提问者不会有帮助。正是您添加的示例所增加的价值使这个答案值得一投。@user4581301这很奇怪-听起来问题已经结束了,因为答案可能已经过时了更新了输出以显示一些变化-使用与OP postedI完全相同的代码。我是最接近的投票者之一。大约在您回答并打算尝试g++main.cpp-o main-std=c++11评论的同时,我投票了,但您的回答涵盖了它以及更多内容。通常,像这样的问题需要关闭,因为它吸引了垃圾答案和本应是评论的一行。你的答案很少有人考虑过。不用担心。保护取决于mods,而不是社区行动。社区比mods多得多。在我看来,有很多完全合理的问题会得到简洁或垃圾的答案。结束一个问题不是惩罚。通常,这是对问题的辩护,这样当问题被清理、澄清或其他任何需要的时候,它就不会被埋在垃圾里。保护可能在这里起作用,但这个问题还有多少方法可以回答?无论你做什么,他们都会用正确的标准版本来编译代码。