답변:
스스로 알게 된 것처럼 두 옵션의 차이점은 C ++ 표준을 위반 / 확장하는 GNU 확장이 활성화되어 있는지 여부입니다. GNU C ++ 확장은 여기 에 설명되어 있습니다 . C ++ 프로그램에서 대부분의 GNU C 확장 ( 여기 에서 설명 )을 사용할 수도 있습니다 . 여기 에서 -Wpedantic
GCC 옵션 에 대해 읽는 것도 유용합니다 .
일부 확장은 -std=c++11
표준을 위반하지 않는 한을 사용할 때 여전히 유효 할 수 있습니다 . 예를 들어 MinGW 컴파일러를 사용할 때 working 확장을 필요로합니다 Boost.Lexical_Cast
. 그러나 어떤 것도 사용하지 않는 한 최대한의 휴대 성을 위해 확장 기능을 사용하지 않고 표준을 고수하는 것이 좋습니다. 컴파일러를 변경 해야하는 경우 유용합니다.
gnu11
되었지만 활성화 되지 않은 확장명을 나열하도록 편집하는 것이 좋습니다 c++11
. 당신이 링크 된 목록은 모든 확장의, 그리고 당신 자신을 표시로 그들 중 일부는 함께 사용할 수 있습니다 c++11
뿐만 아니라 (같은 __restrict__
).
gnu
사람은 확장을 참조 않으며, 당신은 휴대용 코드를 작성하려는 경우는 모두 표준 및 피하기 확장에 충실해야한다.