/Zc (규칙)

/Zc 컴파일러 옵션을 사용하여 표준 또는 Microsoft 관련 컴파일러 동작을 지정합니다.

구문

/Zc:option{,option ...}

단일 /Zc 컴파일러 옵션에서 여러 /Zc 옵션을 쉼표로 구분하여 설정할 수 있습니다. /Zc 동일한 명령에서 옵션을 사용하도록 설정하고 사용하지 않도록 설정하면 마지막으로 표시되는 옵션이 사용됩니다.

설명

Visual Studio에서 표준과 호환되지 않는 C 또는 C++에 대한 확장을 구현한 경우 규칙 옵션을 사용하여 /Zc 표준 준수 또는 Microsoft 관련 동작을 지정할 수 있습니다. 일부 옵션의 경우 기존 코드의 대규모 호환성이 손상되는 변경을 방지하기 위해 Microsoft 관련 동작이 기본값입니다. 다른 경우에 기본값은 보안, 성능 또는 호환성의 개선이 호환성이 손상되는 변경 비용보다 큰 표준 동작입니다. 각 규칙 옵션의 기본 설정은 최신 버전의 Visual Studio에서 변경 될 수 있습니다. 각 규칙 옵션에 대한 자세한 내용은 특정 옵션에 대한 문서를 참조하세요. /permissive- 컴파일러 옵션은 기본적으로 설정되지 않은 규칙 옵션을 해당 규칙 설정으로 암시적으로 설정합니다.

/Zc 컴파일러 옵션은 다음과 같습니다.

옵션 동작
/Zc:__cplusplus[-] 매크로를 __cplusplus 사용하여 지원되는 표준을 보고합니다. 기본적으로 꺼져 있습니다.
/Zc:__STDC__ 매크로를 __STDC__ 사용하여 C 표준이 지원됨을 보고합니다. 기본적으로 꺼져 있습니다.
/Zc:alignedNew[-] C++17에 과도하게 정렬된 동적 할당을 사용하도록 설정합니다. 이상 지정하지 않는 한 /std:c++17 기본적으로 해제됩니다.
/Zc:auto[-] 에 대한 새 표준 C++ 의미를 적용합니다 auto. 기본적으로 설정되어 있습니다.
/Zc:char8_t[-] C++20 네이티브 리터럴 u8 지원을 const char8_t사용하거나 사용하지 않도록 설정합니다. 이상 지정하지 않는 한 /std:c++20 기본적으로 해제됩니다.
/Zc:checkGwOdr[-] 에서 /Gw표준 C++ ODR 위반을 적용합니다.
/Zc:enumTypes[-] 형식 추론에 표준 enum C++ 규칙을 사용하도록 설정합니다. 기본적으로 꺼져 있습니다.
/Zc:externC[-] 함수에 extern "C" 표준 C++ 규칙을 적용합니다. 지정하지 않는 한 /permissive- 기본적으로 해제됩니다.
/Zc:externConstexpr[-] 변수에 대한 constexpr 외부 연결을 사용하도록 설정합니다. 기본적으로 꺼져 있습니다.
/Zc:forScope[-] 표준 C++ for 범위 지정 규칙을 적용합니다. 기본적으로 설정되어 있습니다.
/Zc:gotoScope[-] 지역 변수 초기화에 대한 표준 C++ goto 규칙을 적용합니다. 지정하지 않는 한 /permissive- 기본적으로 해제됩니다.
/Zc:hiddenFriend[-] 표준 C++ 숨겨진 친구 규칙을 적용합니다. 지정하지 않는 한 /permissive- 기본적으로 해제됩니다.
/Zc:implicitNoexcept[-] 필수 함수에서 암시적 noexcept 사용을 설정합니다. 기본적으로 설정되어 있습니다.
/Zc:inline[-] COMDAT이거나 내부 링크만 있는 경우 참조되지 않은 함수 또는 데이터를 제거합니다. 기본적으로 꺼져 있습니다.
/Zc:lambda[-] 제네릭 람다에서 규칙 모드 구문 검사 대해 새 람다 프로세서를 사용하도록 설정합니다. 이상 지정하지 않는 한 /std:c++20 기본적으로 해제됩니다.
/Zc:noexceptTypes[-] C++17 noexcept 규칙을 적용합니다. 이상 지정하지 않는 한 /std:c++17 기본적으로 해제됩니다.
/Zc:nrvo[-] 선택적 복사를 사용하도록 설정하고 엘리션을 이동합니다. 또는 이후를 지정하지 않는 한 /O2/permissive-/std:c++20 기본적으로 해제됩니다.
/Zc:preprocessor[-] 새로운 준수 전처리기를 사용합니다. 이상 지정하지 않는 한 /std:c11 기본적으로 해제됩니다.
/Zc:referenceBinding[-] UDT 임시는 비컨스트 lvalue 참조에 바인딩되지 않습니다. 지정하지 않는 한 /permissive- 기본적으로 해제됩니다.
/Zc:rvalueCast[-] 표준 C++ 명시적 형식 변환 규칙을 적용합니다. 지정하지 않는 한 /permissive- 기본적으로 해제됩니다.
/Zc:sizedDealloc[-] C++14 전역 크기 할당 취소 함수를 사용하도록 설정합니다. 기본적으로 설정되어 있습니다.
/Zc:strictStrings[-] 문자열 리터럴을 변환 또는 wchar_t* 변환하지 char* 않도록 설정합니다. 지정하지 않는 한 /permissive- 기본적으로 해제됩니다.
/Zc:static_assert[-] 의 엄격한 처리 static_assert 지정하지 않는 한 /permissive- 기본적으로 해제됩니다.
/Zc:templateScope[-] 표준 C++ 템플릿 매개 변수 섀도 규칙을 적용합니다. 기본적으로 꺼져 있습니다.
/Zc:ternary[-] 피연산자 형식에 조건부 연산자 규칙을 적용합니다. 지정하지 않는 한 /permissive- 기본적으로 해제됩니다.
/Zc:threadSafeInit[-] 스레드로부터 안전한 로컬 정적 초기화를 사용하도록 설정합니다. 기본적으로 설정되어 있습니다.
/Zc:throwingNew[-] 오류 발생을 가정 operator new 합니다. 기본적으로 꺼져 있습니다.
/Zc:tlsGuards[-] TLS 변수 초기화에 대한 런타임 검사 생성합니다. 기본적으로 설정되어 있습니다.
/Zc:trigraphs[-] 삼각을 사용하도록 설정합니다(사용되지 않음, 기본적으로 꺼져 있음).
/Zc:twoPhase- 형식이 일치하지 않는 템플릿 구문 분석 동작을 사용합니다(지정된 경우에만 /permissive- 적용되며 기본값은 준수).
/Zc:wchar_t[-] wchar_t 는 typedef가 아닌 네이티브 형식입니다. 기본적으로 설정되어 있습니다.
/Zc:zeroSizeArrayNew[-] 개체의 0사이즈 배열에 대한 멤버 new/delete 를 호출합니다. 기본적으로 설정되어 있습니다.

MSVC의 규칙 문제에 대한 자세한 내용은 비표준 동작을 참조 하세요.

참고 항목

MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문