[英]using new c++11 feature in older versions
int main(){
int x{1};
cout << "Value of x = " << x << endl;
}
在这里,我使用“ {}”语法来初始化变量x及其完美的工作状态
Value of x = 1
用g++ --std=c++11
编译时
删除生成的.out
文件并用g++ --std=c++98
重新编译后,我得到以下警告。
main.cpp:10:7: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
int x{1};
但是,当运行.out文件时,我仍然得到所需的输出。
在这里,我想知道实际发生了什么。 为什么得到正确的输出。 天气编译器正在使用--std=c++11
重新编译它?
GCC要求您使用某些扩展将代码编译为C ++ 98。 它可能接受某些或全部C ++ 11功能,也可能不接受。 默认行为通常是接受它可能理解的任何代码,即使它不是严格有效的C ++。
为了严格遵守,您可以添加-pedantic-errors
开关。 这将使GCC仅将真正的ISO C ++(由--std
标志指定)视为有效,并向其他一些可能有害的构造添加诊断信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.