$ echo | gcc -x c++-E -dM -| grep "STRICT_ANSI\|__cplusplus"#define __cplusplus 201402L
$ gcc --version
gcc (GCC) 6.3.1 20161221(Red Hat 6.3.1-1)
Copyright (C)2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ lsb_release -a
LSB Version::core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: Fedora
Description: Fedora release 25(Twenty Five)
Release:25
Codename: TwentyFive
Fedora 25 의 GCC 6.3.1 에 포함된 g++ 은 기본값으로 -std=gnu++14 을 사용합니다.
gcc 버전(혹은 리눅스 배포판)에 따라서 std
gcc 버전(혹은 리눅스 배포판)에 따라서 std 기본값이 달라요.
g++의 경우 우분투 14.04의 경우 c++99, 16.04의 경우 c++11 일겁니다.
좀 더 정확하게 말하면
좀 더 정확하게 말하면
gcc 5.x부터 -std=gnu89 대신 -std=gnu11이 디폴트이며 (https://gcc.gnu.org/gcc-5/changes.html)
g++ 6.x부터 -std=gnu++98 대신 -std=gnu++14이 디폴트가 됩니다. (https://gcc.gnu.org/gcc-6/changes.html)
gnu11이나 gnu++14는 표준 c11, c++14 등과 약간 다른데, 그 점에 대해서는 gcc/g++ 매뉴얼 참조하세요.
GCC 6.3.0 의 g++ 에선 gnu++14
GCC 6.3.0 의 g++ 에선 gnu++14 (c++14 및 각종 GCC extension) https://gcc.gnu.org/onlinedocs/gcc-6.3.0/gcc/Standards.html#Standards
GCC 5.4.0 의 g++ 에선 gnu++98 (c++98 및 각종 GCC extension) https://gcc.gnu.org/onlinedocs/gcc-5.4.0/gcc/Standards.html#Standards
GCC 4.9.4 의 g++ 에선 gnu++98 (c++98 및 각종 GCC extension) https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/Standards.html#Standards
배포본마다 다른지는 확인하기 어려우니, g++ -dumpspecs 의 결과 중에 -std 옵션의 기본값을 바꾸는게 있는지 직접 살펴보세요.
예를 들면 %{!std:-std=c++11} 같은 것.
또는 컴파일러를 실행시켜 몇가지 macro 를 직접 확인하셔도 됩니다.
Fedora 25 의 GCC 6.3.1 에 포함된 g++ 은 기본값으로 -std=gnu++14 을 사용합니다.
댓글 달기