Which C++ standard is the default when compiling with g++?

后端 未结 9 569
故里飘歌
故里飘歌 2020-11-29 23:59

I have a piece of code that looks like the following. Let\'s say it\'s in a file named example.cpp

#include 
#include 

        
9条回答
  •  时光取名叫无心
    2020-11-30 00:21

    I'm guessing a default version of the C++ compiler gets called, but I don't know which?

    This is only guessable by reading the documentation of your particular compiler version.

    If using a recent GCC, I recommend first to understand what version are you using by running

    g++ -v
    

    or

    g++ --version
    

    and then refer to the version of the particular release of GCC. For example for GCC 7, read GCC 7 changes etc

    Alternatively, run

    g++ -dumpspecs
    

    and decipher the default so called spec file.

    BTW, you could ensure (e.g. in some of your common header file) that C++ is at least C++17 by coding

     #if __cplusplus < 201412L
     #error expecting C++17 standard
     #endif
    

    and I actually recommend doing it that way.

    PS. Actually, think of C++98 & C++17 being two different languages (e.g. like Ocaml4 and C++11 are). Require your user to have a compiler supporting some defined language standard (e.g. C++11), not some particular version of GCC. Read also about package managers.

提交回复
热议问题