首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认标准为201402L ( g++ )时,g++是否与g++ -std=c++14不同?

默认标准为201402L ( g++ )时,g++是否与g++ -std=c++14不同?
EN

Stack Overflow用户
提问于 2021-04-19 19:52:08
回答 1查看 413关注 0票数 1

我试图利用预编译的头来加速按照以下链接进行编译:https://codeforces.com/blog/entry/53909

我注意到,头文件的预编译和随后的.cpp程序编译必须使用相同的g++标志才能加快速度,这是有意义的。但是,将c++标准显式设置为默认标准无效。因此,使用g++ stdc++.h和后续的g++ -std=c++14 program.cpp预编译都不起作用,g++ -std=c++14g++ program.cpp也不起作用.

这对我来说毫无意义,因为我知道我的编译器x86_64-W64-mingw32-g++..exe (gcc版本10.2.0)在默认情况下符合201402L (c++14)标准,我使用g++ -dM -E -x c++ /dev/null | fgrep __cplusplus计算该标准,并得到以下响应:

代码语言:javascript
复制
#define __cplusplus 201402L

那么,我的问题是,当g++和g++ -std=c++14默认遵守2012 402 L时,g++有什么区别?另外,对我来说,选择其中任何一种是否足够重要?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-19 20:08:43

GCC默认不使用-std=c++14进行编译。来自-std (版本9.3.0)的GCC手册标志的描述如下

-std=确定语言标准。目前只有在编译C或C++时才支持此选项。 编译器可以接受几个基本标准,如c90或c++98,以及这些标准的GNU方言,如gnu90或gnu++98。当指定了基本标准时,编译器将接受遵循该标准的所有程序,以及那些使用GNU扩展的程序,而这些扩展并不与此标准相矛盾。 。。。 必须提供此选项的值;可能的值为 。。。 c++14 c++1y 对2014年国际标准化组织C++标准再加修正。不推荐使用c++1y这个名称。gnu++14 gnu++1y -std=c++14. --这是C++代码的默认.名称gnu++1y不推荐. 。。。

强调我的。当前的默认设置是-std=gnu++14,它以C++14标准为目标,同时也为C++语言启用了GNU扩展-std=c++XX标志和-std=gnu++XX标志之间的区别在-std=c++11和-std=gnu++11有什么区别?中得到了进一步的解释。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67168527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档