Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

-std=c++11과 -std=gnu++11의 차이점 완벽 정리

-std=c++11과 -std=gnu++11, 무엇이 다를까?

GNU C++ 컴파일러인 g++는 표준 C++ 언어에 포함되지 않은 고유한 확장 기능(GNU extensions)을 제공합니다. 두 컴파일 옵션의 차이는 바로 이 확장 기능의 활성화 여부에 있습니다.

  • -std=c++11: ISO C++11 표준만 엄격하게 준수하며, 표준을 위반할 가능성이 있는 GNU 확장 기능은 비활성화됩니다.
  • -std=gnu++11: C++11 표준을 따르면서도, 표준을 위반하는 GNU 확장 기능까지 함께 활성화합니다.

주의할 점

다만, 표준을 위반하지 않는 확장 기능이라면 -std=c++11 옵션을 사용하더라도 여전히 적용될 수 있습니다. 즉, -std=c++11이 모든 GNU 확장을 완전히 차단하는 것은 아니라는 점에 유의해야 합니다.

GNU 확장 기능 목록 확인하기

GNU 컴파일러가 제공하는 C++ 언어 확장 기능의 전체 목록은 GCC 공식 문서에서 확인할 수 있습니다.

https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html