繁体   English   中英

在旧版本中使用新的c ++ 11功能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM