我试图利用预编译的头来加速按照以下链接进行编译:https://codeforces.com/blog/entry/53909
我注意到,头文件的预编译和随后的.cpp程序编译必须使用相同的g++标志才能加快速度,这是有意义的。但是,将c++标准显式设置为默认标准无效。因此,使用g++ stdc++.h和后续的g++ -std=c++14 program.cpp预编译都不起作用,g++ -std=c++14和g++ program.cpp也不起作用.
这对我来说毫无意义,因为我知道我的编译器x86_64-W64-mingw32-g++..exe (gcc版本10.2.0)在默认情况下符合201402L (c++14)标准,我使用g++ -dM -E -x c++ /dev/null | fgrep __cplusplus计算该标准,并得到以下响应:
#define __cplusplus 201402L那么,我的问题是,当g++和g++ -std=c++14默认遵守2012 402 L时,g++有什么区别?另外,对我来说,选择其中任何一种是否足够重要?
发布于 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有什么区别?中得到了进一步的解释。
https://stackoverflow.com/questions/67168527
复制相似问题