Standard C++ definiuje zasady dotyczące zachowania programów w określonych okolicznościach. W większości przypadków kompilatory będą przestrzegać tych zasad. Jednak wiele kompilatorów wdraża własne zmiany w języku, często w celu zwiększenia kompatybilności z innymi wersjami języka (np. C99) lub ze względów historycznych. Te specyficzne zachowania kompilatora nazywane są rozszerzeniami kompilatora.
Napisanie programu korzystającego z rozszerzenia kompilatora umożliwia pisanie programów niezgodnych ze standardem C++. Programy korzystające z niestandardowych rozszerzeń zazwyczaj nie będą się kompilować na innych kompilatorach (które nie obsługują tych samych rozszerzeń), a jeśli tak, mogą nie działać poprawnie.
Frustrujące jest to, że rozszerzenia kompilatora są często domyślnie włączone. Jest to szczególnie szkodliwe dla nowych uczniów, którzy mogą myśleć, że pewne działające zachowania są częścią oficjalnego standardu C++, podczas gdy w rzeczywistości ich kompilator jest po prostu zbyt liberalny.
Ponieważ rozszerzenia kompilatora nigdy nie są konieczne i powodują niezgodność programów ze standardami C++, zalecamy wyłączenie rozszerzeń kompilatora.
Najlepsza praktyka
Wyłącz rozszerzenia kompilatora, aby mieć pewność, że Twoje programy (i praktyki kodowania) pozostają zgodne ze standardami C++ i będą działać na każdym system.
Wyłączanie rozszerzeń kompilatora
W przypadku użytkowników programu Visual Studio
Aby wyłączyć rozszerzenia kompilatora, kliknij prawym przyciskiem myszy nazwę projektu w Eksplorator rozwiązań oknie, a następnie wybierz Właściwości:

W oknie dialogowym Projekt , najpierw upewnij się, że pole Konfiguracja jest ustawione ustaw na Wszystkie konfiguracje.
Następnie kliknij C/C++ > zakładkę Język i ustaw Tryb zgodności Do Tak (/permissive-) (jeśli nie jest to jeszcze ustawione przez domyślnie).

W przypadku użytkowników Code::Blocks
Wyłącz rozszerzenia kompilatora poprzez menu Ustawienia > Kompilator > zakładka Flagi kompilatora, a następnie znajdź i zaznacz opcję -pedantic-errors .

Dla użytkowników gcc i Clang
Możesz wyłączyć rozszerzenia kompilatora, dodając flagę -pedantic-errors w wierszu poleceń kompilacji.
Dla użytkowników VS Code
- Otwórz plik task.json, znajdź
"args", a następnie zlokalizuj wiersz"${file}"w tej sekcji. - Nad wierszem
"${file}"wiersz, dodaj nową linię zawierającą następujące polecenia:
"-pedantic-errors",
Na chwilę pisania tego tekstu VS Code nie dodaje automatycznie znaku nowej linii na końcu plików kodu, w których go brakuje (coś, co jest pedantycznie wymagane przez standard C++). Na szczęście możemy nakazać VS Code, aby to zrobił:
- Otwórz VS Code i przejdź do Plik (Kod, jeśli używasz Mac) > Preferencje > Ustawienia. Spowoduje to otwarcie okna dialogowego ustawień.
- Wejdź
insert final newlinew pasek wyszukiwania. - Na obu zakładkach Ustawienia obszaru roboczego i Ustawienia użytkownika upewnij się, że pole wyboru oznaczone Pliki: Wstaw końcowy znak nowego wiersza jest zaznaczone.
Powiązana treść
Użytkownicy Xcode mogą zapoznać się z komentarzem Rory'ego, który uprzejmie udostępnił instrukcje.
Przypomnienie
Te ustawienia są stosowane dla każdego projektu. Należy je ustawić za każdym razem, gdy tworzysz nowy projekt lub jednorazowo utwórz projekt szablonowy z tymi ustawieniami i użyj go do tworzenia nowych projektów.

