본문 바로가기

C++ (learncpp)/Introduction - Getting Started

0.10 — Configuring your compiler: Compiler extensions

C++ 표준은 프로그램이 특정 상황에서 어떻게 작동해야 하는지에 대한 규칙을 정의합니다. 그리고 대부분의 경우 컴파일러는 이러한 규칙을 따릅니다. 그러나 많은 컴파일러는 종종 다른 버전의 언어(예: C99)와의 호환성을 향상시키기 위해 또는 역사적 이유로 언어에 대한 자체 변경 사항을 구현합니다. 이러한 컴파일러 고유의 동작을 컴파일러 확장이라고 합니다.

컴파일러 확장을 사용하는 프로그램을 작성하면 C++ 표준과 호환되지 않는 프로그램을 작성할 수 있습니다. 비표준 확장을 사용하는 프로그램은 일반적으로 다른 컴파일러(동일한 확장을 지원하지 않는 컴파일러)에서 컴파일되지 않으며, 지원하더라도 제대로 실행되지 않을 수 있습니다.

실망스럽게도 컴파일러 확장은 기본적으로 활성화되어 있는 경우가 많습니다. 이것은 작동하는 일부 동작이 공식 C++ 표준의 일부라고 생각할 수 있는 새로운 학습자에게 특히 피해를 줍니다. 실제로는 컴파일러가 단순히 지나치게 허용합니다.

컴파일러 확장은 절대 필요하지 않으며 프로그램이 C++ 표준을 준수하지 않게 하므로 컴파일러 확장을 끄는 것이 좋습니다.

 

모범 사례 (Best Practice)

프로그램(및 코딩 방식)이 C++ 표준을 준수하고 모든 시스템에서 작동하도록 하려면 컴파일러 확장을 비활성화하십시오.

 

Disabling compiler extensions

 

Visual Studio 사용자의 경우 (For Visual Studio users)

컴파일러 확장을 비활성화하려면 솔루션 탐색기 창에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭한 다음 속성을 선택합니다.




프로젝트 대화 상자에서 먼저 구성 필드가 모든 구성으로 설정되어 있는지 확인하십시오.

그런 다음 C/C++ > 언어 탭을 클릭하고 언어 확장 비활성화를 예(/Za)로 설정합니다.




 

코드블록 사용자 (For Code::Blocks users)

설정 메뉴 > 컴파일러 > 컴파일러 플래그 탭을 통해 컴파일러 확장을 비활성화한 다음 -pedantic-errors 옵션을 찾아 확인합니다.


GCC/G++ 사용자용

-pedantic-errors 플래그를 컴파일 명령줄에 추가하여 컴파일러 확장을 비활성화할 수 있습니다.
Related content

Xcode 사용자는 친절하게 지침을 제공한 Rory의 의견을 참조할 수 있습니다.
Reminder (알림)

이러한 설정은 프로젝트별로 적용됩니다. 새 프로젝트를 만들 때마다 설정하거나 해당 설정으로 템플릿 프로젝트를 한 번 만들고 새 프로젝트를 만드는 데 사용해야 합니다.