Udostępnij za pośrednictwem


/Zc (Zgodność)

Użyj opcji kompilatora /Zc , aby określić standardowe lub specyficzne dla firmy Microsoft zachowanie kompilatora.

Składnia

/Zc:option{,option ...}

Możesz ustawić wiele /Zc opcji rozdzielonych przecinkami w jednej /Zc opcji kompilatora. /Zc Jeśli opcja jest włączona i wyłączona w tym samym poleceniu, jest używana opcja, która jest wyświetlana jako ostatnia.

Uwagi

Jeśli program Visual Studio zaimplementował rozszerzenie dla języka C lub C++, które jest niezgodne ze standardem /Zc , można użyć opcji zgodności, aby określić zachowanie zgodne ze standardem lub zachowanie specyficzne dla firmy Microsoft. W przypadku niektórych opcji zachowanie specyficzne dla firmy Microsoft jest domyślne, aby zapobiec zmianom powodujących niezgodność na dużą skalę w istniejącym kodzie. W innych przypadkach wartością domyślną jest zachowanie standardowe, w którym ulepszenia zabezpieczeń, wydajności lub zgodności przewyższają koszty zmian powodujących niezgodność. Domyślne ustawienie każdej opcji zgodności może ulec zmianie w nowszych wersjach programu Visual Studio. Aby uzyskać więcej informacji na temat każdej opcji zgodności, zobacz artykuł dotyczący określonej opcji. Opcja kompilatora /permissive- niejawnie ustawia opcje zgodności, które nie są domyślnie ustawione na ich zgodne ustawienia.

Poniżej przedstawiono opcje kompilatora /Zc :

Opcja Zachowanie
/Zc:__cplusplus[-] Włącz makro, __cplusplus aby zgłosić obsługiwany standard. Domyślnie wyłączone.
/Zc:__STDC__ Włącz makro, __STDC__ aby zgłosić, że standard C jest obsługiwany. Domyślnie wyłączone.
/Zc:alignedNew[-] Włącz alokację dynamiczną wyrównaną w języku C++17. Domyślnie wyłączone, chyba że /std:c++17 zostanie określony lub nowszy.
/Zc:auto[-] Wymusić nowe znaczenie języka C++ w warstwie Standardowa dla elementu auto. Domyślnie włączona.
/Zc:char8_t[-] Włącz lub wyłącz obsługę literałów natywnych u8 języka C++20 jako const char8_t. Domyślnie wyłączone, chyba że /std:c++20 zostanie określony lub nowszy.
/Zc:checkGwOdr[-] Wymuś naruszenia standardowej funkcji ODR języka C++ w obszarze /Gw.
/Zc:enumTypes[-] Włącz standardowe reguły języka C++ dla enum odliczeń typów. Domyślnie wyłączone.
/Zc:externC[-] Wymuszanie standardowych reguł języka C++ dla extern "C" funkcji. Domyślnie wyłączone, chyba że /permissive- zostanie określony.
/Zc:externConstexpr[-] Włącz połączenie zewnętrzne dla constexpr zmiennych. Domyślnie wyłączone.
/Zc:forScope[-] Wymuszanie standardowych reguł określania zakresu języka C++ for . Domyślnie włączona.
/Zc:gotoScope[-] Wymuszanie standardowych reguł języka C++ goto dotyczących inicjowania zmiennej lokalnej. Domyślnie wyłączone, chyba że /permissive- zostanie określony.
/Zc:hiddenFriend[-] Wymuszaj reguły ukrytego przyjaciela języka C++ w warstwie Standardowa. Domyślnie wyłączone, chyba że /permissive- zostanie określony.
/Zc:implicitNoexcept[-] Włącz niejawne noexcept funkcje wymagane. Domyślnie włączona.
/Zc:inline[-] Usuń niereferencyjne funkcje lub dane, jeśli są one tylko comDAT lub mają połączenie wewnętrzne. Domyślnie wyłączone.
/Zc:lambda[-] Włącz nowy procesor lambda na potrzeby sprawdzania składni trybu zgodności w ogólnych wyrażeniach lambda. Domyślnie wyłączone, chyba że /std:c++20 zostanie określony lub nowszy.
/Zc:noexceptTypes[-] Wymuszanie reguł języka C++17 noexcept . Domyślnie wyłączone, chyba że /std:c++17 zostanie określony lub nowszy.
/Zc:nrvo[-] Włącz opcjonalne kopiowanie i przenoszenie elizji. Domyślnie wyłączone, chyba że /O2określono wartość , /permissive-lub /std:c++20 nowszą.
/Zc:preprocessor[-] Użyj nowego zgodnego preprocesora. Domyślnie wyłączone, chyba że /std:c11 zostanie określony lub nowszy.
/Zc:referenceBinding[-] Tymczasowe udT nie będzie wiązać się z odwołaniem innej niż lvalue. Domyślnie wyłączone, chyba że /permissive- zostanie określony.
/Zc:rvalueCast[-] Wymuszanie standardowych reguł konwersji typów jawnych języka C++. Domyślnie wyłączone, chyba że /permissive- zostanie określony.
/Zc:sizedDealloc[-] Włącz funkcje cofania wielkości globalnego języka C++14. Domyślnie włączona.
/Zc:strictStrings[-] Wyłącz literał ciągu do char* lub wchar_t* konwersję. Domyślnie wyłączone, chyba że /permissive- zostanie określony.
/Zc:static_assert[-] ścisła obsługa programu static_assert. Domyślnie wyłączone, chyba że /permissive- zostanie określony.
/Zc:templateScope[-] Wymuszanie reguł cieniowania parametrów szablonu języka C++ w warstwie Standardowa. Domyślnie wyłączone.
/Zc:ternary[-] Wymuszanie reguł operatorów warunkowych dla typów operandów. Domyślnie wyłączone, chyba że /permissive- zostanie określony.
/Zc:threadSafeInit[-] Włącz lokalne inicjowanie statyczne bezpieczne wątkowo. Domyślnie włączona.
/Zc:throwingNew[-] Załóżmy, że operator new zgłaszany jest błąd. Domyślnie wyłączone.
/Zc:tlsGuards[-] Generowanie testów środowiska uruchomieniowego pod kątem inicjowania zmiennej TLS. Domyślnie włączona.
/Zc:trigraphs[-] Włącz trigrafy (przestarzałe, wyłączone domyślnie).
/Zc:twoPhase- Użyj zachowania analizy szablonu niekonformowania (ma zastosowanie tylko wtedy, gdy /permissive- jest określony, który jest domyślnie zgodny).
/Zc:wchar_t[-] wchar_t jest typem natywnym, a nie typedef. Domyślnie włączona.
/Zc:zeroSizeArrayNew[-] Wywołaj element członkowski new/delete dla tablic o rozmiarze 0 obiektów. Domyślnie włączona.

Aby uzyskać więcej informacji na temat problemów ze zgodnością w programie MSVC, zobacz Zachowanie niezgodne.

Zobacz też

Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC