다음을 통해 공유


컴파일러 버전별 컴파일러 경고

컴파일러는 /Wv 컴파일러 옵션을 사용하여 지정한 버전 이후에 발생한 경고를 표시하지 않을 수 있습니다. 이 옵션은 새 도구 집합 버전을 도입하고 새 경고를 일시적으로 표시하지 않으려는 경우 빌드 프로세스를 관리하는 데 유용합니다. 이 옵션은 새로운 오류 메시지가 아닌 경고만 표시합니다. 모든 새로운 경고를 영구적으로 표시하지 않지 마세요! 항상 가장 높은 일반 경고 수준인 /W4에서 컴파일하고 가능한 한 빨리 빌드에서 /Wv 옵션을 제거하는 것이 좋습니다.

이러한 버전의 컴파일러에는 새로운 경고가 도입되었습니다.

Product 컴파일러 버전 번호
Visual Studio 2002 13.00.9466
Visual Studio 2003 13.10.3077
Visual Studio 2005 14.00.50727.762
Visual Studio 2008 15.00.21022.08
Visual Studio 2010 16.00.40219.01
Visual Studio 2012 17.00.51106.1
Visual Studio 2013 18.00.21005.1
Visual Studio 2015 RTM 19.00.23026.0
Visual Studio 2015 업데이트 1 19.00.23506.0
Visual Studio 2015 업데이트 2 19.00.23918.0
Visual Studio 2015 업데이트 3 19.00.24215.1
Visual Studio 2017 RTM 19.10.25017.0
Visual Studio 2017 15.3 버전 19.11.25506.0
Visual Studio 2017 15.5 버전 19.12.25830.0
Visual Studio 2017 버전 15.6 19.13.26128.0
Visual Studio 2017 버전 15.7 19.14.26428.0
Visual Studio 2017 버전 15.8 19.15.26726.0
Visual Studio 2017 버전 15.9 19.16.26926.0
Visual Studio 2019 RTM 19.20.27004.0
Visual Studio 2019 버전 16.1 19.21.27702.0
Visual Studio 2019 버전 16.2 19.22.27905.0
Visual Studio 2019 버전 16.3 19.23.28105.0
Visual Studio 2019 버전 16.4 19.24.28314.0
Visual Studio 2019 버전 16.5 19.25.28610.0
Visual Studio 2019 버전 16.6 19.26.28805.0
Visual Studio 2019 버전 16.7 19.27.29112.0
Visual Studio 2019 버전 16.8 19.28.29333.0
Visual Studio 2019 버전 16.9 19.28.29700.0
Visual Studio 2019 버전 16.10 19.29.30000.0
Visual Studio 2019 버전 16.11 19.29.30100.0
Visual Studio 2022 버전 17.0 RTW 19.30
Visual Studio 2022 버전 17.1 19.31
Visual Studio 2022 버전 17.2 19.32
Visual Studio 2022 버전 17.3 19.33
Visual Studio 2022 버전 17.4 19.34
Visual Studio 2022 버전 17.5 19.35
Visual Studio 2022 버전 17.6 19.36
Visual Studio 2022 버전 17.7 19.37
Visual Studio 2022 버전 17.8 19.38
Visual Studio 2022 버전 17.9 19.39
Visual Studio 2022 버전 17.10 19.40

/Wv 옵션에는 주 번호, 주 번호 및 부 번호 또는 주 번호, 부 번호 및 빌드 번호만 지정할 수 있습니다. 컴파일러는 지정된 번호로 시작하는 버전과 일치하는 모든 경고를 보고합니다. 지정된 숫자보다 큰 버전에 대한 모든 경고를 표시하지 않습니다. 예를 들어, /Wv:17은 Visual Studio 2012 이전 버전에 발생한 경고를 보고하고 Visual Studio 2013(버전 18) 이상의 컴파일러에서 발생한 경고를 표시하지 않습니다. Visual Studio 2015 업데이트 2 이상에 발생한 경고를 표시하지 않으려면 /Wv:19.00.23506을 사용하면 됩니다. Visual Studio 2017 버전 15.5 이전의 모든 Visual Studio 버전에 발생한 경고를 보고하지만 Visual Studio 2017 버전 15.5 이상에 발생한 경고를 표시하지 않으려면 /Wv:19.11을 사용합니다.

다음 섹션에는 /Wv 컴파일러 옵션을 사용하여 표시하지 않을 수 있는 각 버전의 Visual C++에 발생한 경고가 나열되어 있습니다. /Wv 옵션은 지정된 컴파일러 버전보다 이전에 발생하는 나열되지 않은 경고를 표시하지 않을 수 없습니다.

Visual Studio 2022 버전 17.10(컴파일러 버전 19.40)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.40을 사용하여 표시되지 않습니다.

Warning 메시지
C4859 'value'은 '/presetWarn'에 대한 유효한 인수가 아닙니다. 10진 값 > 0이어야 합니다. 명령줄 플래그가 무시됩니다.
C4860 'object name': 컴파일러가 0으로 초기화한 스토리지 'number' 바이트
C4861 컴파일러가 0으로 초기화된 스토리지 'number'바이트
C5273 동작 변경: 무명 형식의 _Alignas가 더 이상 무시되지 않습니다(승격된 멤버가 정렬됨)
C5274 동작 변경: _Alignas는 더 이상 'type' 형식에 적용되지 않습니다(선언된 데이터 개체에만 적용됨).
C5275 외관 어셈블리 'name'을 '/clr' 아래로 가져오는 중입니다. '/clr:netcore' 옵션이 누락되었나요?
C5304 이 모듈에서 내보낸 사용 선언 'name1'에 의해 지정된 선언은 내부 연결을 가지며 모듈 외부에서 이러한 이름을 사용하는 것은 잘못된 형식입니다. 이 모듈 외부에서 'name2' 'inline' 선언을 고려하여 사용합니다.
C5305 'name': 명시적 인스턴스화 정의 뒤에 오는 명시적 인스턴스화 선언은 무시됩니다.

Visual Studio 2022 버전 17.9(컴파일러 버전 19.39)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.39을 사용하여 표시되지 않습니다.

Warning 메시지
C4975 형식 매개 변수 'parameter'에 대해 modopt '[modifier]'이(가) 무시되었습니다.
C5272 복사할 수 없는 형식 'type'의 개체를 throw하는 것은 비표준입니다. 런타임에 복사본이 필요한 경우 마치 memcpy에 의해 생성됩니다.

Visual Studio 2022 버전 17.8(컴파일러 버전 19.38)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.38을 사용하여 표시되지 않습니다.

Warning 메시지
C5109 매크로에서 __VA_OPT__를 사용하려면 '/Zc:preprocessor'이(가) 필요합니다.
C5110 __VA_OPT__는 C++20 또는 C23 이전의 확장입니다.
C5271 이전에 가져온 어셈블리 'assemblies1'의 이름이 가져오는 어셈블리 'assemblies2' 이름과 동일합니다. 의도된 것인가요?
C5303 [[msvc::intrinsic]]으로 표시된 함수로 인해 no-op cast가 발생하지 않았습니다.

Visual Studio 2022 버전 17.7(컴파일러 버전 19.37)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.36을 사용하여 표시되지 않습니다.

Warning 메시지
C4907 여러 호출 규칙을 지정할 수 없습니다. 마지막으로 지정된 것이 사용됩니다.
C5267 'type'에 대한 암시적 복사 생성자/대입 연산자 정의는 사용자가 제공한 대입 연산자/복사 생성자가 있으므로 더 이상 사용되지 않습니다.
C5268 고정 주소 0x주소에 메모리를 할당하지 못했습니다. 비트가 동일한 .pch 파일이 필요한 경우 특정 주소 기반을 지정하려면 /Yb를 사용합니다.
C5269 고정 주소 0x주소에 PCH 메모리를 할당하지 못했습니다. 비트가 동일한 .pch 파일이 필요한 경우 특정 주소 기반을 지정하려면 /Ym를 사용합니다.
C5270 'value'이(가) 'switch name' 옵션에는 허용되지 않습니다. value list이(가) 허용되는 값입니다.

Visual Studio 2022 버전 17.6(컴파일러 버전 19.36)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.35을 사용하여 표시되지 않습니다.

Warning 메시지
C5266 반환 형식의 'const' 한정자는 효과가 없습니다.

Visual Studio 2022 버전 17.5(컴파일러 버전 19.35)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.34을 사용하여 표시되지 않습니다.

Warning 메시지
C5082 'va_start'에 대한 두 번째 인수가 마지막으로 명명된 매개 변수가 아닙니다.
C5265 검색 경로 'path'을(를) 열 수 없습니다.

Visual Studio 2022 버전 17.4(컴파일러 버전 19.34)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.33을 사용하여 표시되지 않습니다.

Warning 메시지
C5260 상수 변수 'variable-name'에 포함된 헤더 파일 컨텍스트에는 내부 연결이 있지만 가져온 헤더 단위 컨텍스트에는 외부 연결이 있습니다. 번역 단위 간에 공유할 경우 'inline'으로 선언하거나 이 번역 단위에 대해 로컬로 사용하려는 의도를 표현하려면 'static'으로 선언하는 것이 좋습니다.
C5261 열거형 'enum-name'의 모든 열거자 값을 나타낼 수 있는 정수 형식이 없습니다.
C5262 여기서 암시적 폴스루(fall-through)가 발생합니다. break 문이 누락되었나요? 사례 간에 break 문이 의도적으로 생략된 경우 [[fallthrough]]를 사용합니다.
C5263 임시 개체에서 'std::move'를 호출하면 복사가 생략되지 않습니다.
C5264 'variable-name': 'const' 변수가 사용되지 않았습니다.

Visual Studio 2022 버전 17.3(컴파일러 버전 19.33)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.32을 사용하여 표시되지 않습니다.

Warning 메시지
C5259 'specialized-type': 명시적 특수화에는 'template <>'가 필요합니다.

Visual Studio 2022 버전 17.2(컴파일러 버전 19.32)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.31을 사용하여 표시되지 않습니다.

Warning 메시지
C4983 '/analyze:log'에 대한 인수가 디렉터리가 아닌 단일 파일이기 때문에 '/analyze:sarif:hashname'이 무시되었습니다.
C5081 보안 핫패치는 /GENPROFILE, /FASTGENPROFILE 또는 /LTCG:PGI에서 지원되지 않으므로 보안 핫패치를 비활성화합니다.
C5255 종료되지 않은 양방향 문자 발견: 'U+XXXX'
C5256 'enumeration': 고정된 기본 형식이 있는 열거형의 비정의 선언은 독립 실행형 선언으로만 허용됩니다.
C5257 'enumeration': 고정된 기본 형식 없이 열거형이 이전에 선언되었습니다.
C5258 이 사용에는 'symbol'의 명시적 캡처가 필요하지 않습니다.
C5300 '#pragma ompomic': 'operator'의 왼쪽 피연산자는 할당 식의 왼쪽과 일치해야 합니다.
C5301 '#pragma omp for': 루프 조건이 'comparison'을 사용하는 동안 'loop-index'가 증가합니다. 종료되지 않는 루프인가요?
C5302 '#pragma omp for': 루프 조건이 'comparison'을 사용하는 동안 'loop-index'가 감소합니다. 종료되지 않는 루프인가요?

Visual Studio 2022 버전 17.1(컴파일러 버전 19.31)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.30을 사용하여 표시되지 않습니다.

Warning 메시지
C5251 segment-name 머리글을 포함시킨 후 변경함
C5253 로컬이 아닌 람다는 캡처 기본값을 가질 수 없습니다.
C5254 언어 기능 'terse static assert'에는 컴파일러 플래그 '/std:c++17'이(가) 필요합니다.

Visual Studio 2022 버전 17.0(컴파일러 버전 19.30)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.29을 사용하여 표시되지 않습니다.

Warning 메시지
C5244 'module-name-1' 모듈 범위에 있는 '#include <filename>'이(가) 잘못된 것으로 나타납니다. 모듈 선언 전에 해당 지시문을 이동하거나 텍스트 포함을 'import <filename>;'(으)로 바꾸세요.
C5245 'function': 내부 링크가 있는 참조되지 않은 함수가 제거되었습니다.
C5246 'member': 하위 개체의 초기화는 중괄호로 묶어야 합니다.
C5249 'enumeration_name' 유형의 'bitfield'에는 'bitfield_width'의 지정된 비트 필드 너비로 표현할 수 없는 값을 가진 명명된 열거자가 있습니다.
C5250 'function_name': 내장 함수를 선언하지 않았습니다.
C5252 복수의 다른 형식으로 인해 동일한 XFG 형식 해시 hash-value이(가) 발생했습니다. PDB는 그중 하나에 대한 정보만 기록합니다.

Visual Studio 2019 버전 16.11(컴파일러 버전 19.29.30100.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.29.30099을 사용하여 표시되지 않습니다.

Warning 메시지
C5247 섹션 'section-name'은 C++ 동적 초기화를 위해 예약되어 있습니다. 섹션을 수동으로 만들면 C++ 동적 초기화에 방해가 되며 정의되지 않은 동작이 발생할 수 있습니다.
C5248 섹션 'section-name'은 C++ 동적 초기화를 위해 예약되어 있습니다. 섹션에 수동으로 입력된 변수는 최적화될 수 있으며, 동적 이니셜라이저가 생성된 컴파일러에 관련된 순서로 지정되지 않습니다.

Visual Studio 2019 버전 16.10(컴파일러 버전 19.29.30000.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.28을 사용하여 표시되지 않습니다.

Warning 메시지
C5233 명시적 람다 캡처 'identifier'이(가) 사용되지 않았습니다.
C5234 파일 시스템 오류: 'filename'은(는) 유효한 header-name이 아닙니다. 무시합니다.
C5235 JSON 구문 분석 오류: 문제; 'filename' 무시
C5236 JSON 잘못된 형식: 문제; 'filename' 무시
C5237 'filename'의 헤더 파일에 대해 헤더 단위 항목 'string'을(를) 확인할 수 없습니다. 항목을 무시합니다.
C5238 파일 시스템 오류: 읽기 위해 'filename'을(를) 열 수 없습니다. 무시합니다.
C5239 'Symbol': __declspec(nothrow)로 선언된 함수에서 호출될 가능성이 있는 함수입니다. 예외가 throw되면 정의되지 않은 동작이 발생할 수 있습니다.
C5240 'attribute-string': 이 구문 위치에서 특성이 무시됩니다.
C5241 헤더 이름 조회를 위한 '/exportHeader' 사용은 더 이상 사용되지 않습니다. '/headerName:arg-1 arg-2=filename' 선호
C5242 pragma 'pragma-name'에 구문 오류가 있습니다.
C5243 'Type-name': 불완전한 클래스 'symbol'을(를) 사용하여 ABI 제한으로 인해 잠재적인 하나의 정의 규칙 위반이 발생할 수 있습니다.

Visual Studio 2019 버전 16.9(컴파일러 버전 19.28.29700.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.28.29699을 사용하여 표시되지 않습니다.

Warning 메시지
C5232 C++20에서 이 비교는 'identifier'을(를) 재귀적으로 호출합니다.

Visual Studio 2019 버전 16.8(컴파일러 버전 19.28.29333.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.27을 사용하여 표시되지 않습니다.

Warning 메시지
C5072 ASAN enabled without debug information emission. Enable debug info for better ASAN error reporting
C5211 'keyword-1' has been deprecated; prefer using 'keyword-2' instead
C5222 'attribute-name': all unscoped attribute names are reserved for future standardization
C5223 all attribute names in the attribute namespace 'msvc' are reserved for the implementation
C5224 all attribute names in the attribute namespace 'a-namespace' are reserved for future standardization
C5225 'symbol': exported inline function defined in a private module fragment is a non-standard extension
C5226 'symbol': exported template defined in private module fragment has no reachable instantiation
C5227 nonstandard extension, resolved 'symbol' to 'instance' which is not visible with /permissive- on.
C5228 nonstandard extension, 'identifier' resolved to a member of a dependent base. This lookup is not allowed under /permissive-.
C5229 nonstandard extension, the hidden friend function 'function-name' was found by name lookup which isn't allowed under /permissive-.
C5230 nonstandard extension, 'identifier' was resolved to 'symbol' under /permissive. Under /permissive- it would resolve to 'other-symbol'.
C5231 the expression 'co_await promise.final_suspend()' must be non-throwing;

Visual Studio 2019 버전 16.7(컴파일러 버전 19.27.29112.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.26을 사용하여 표시되지 않습니다.

Warning 메시지
C5207 the simple requirement asserts the validity of expression 'e->id'. Did you mean '{ e } -> id'? You can suppress the warning using '{ e->id }'
C5209 the C++20 syntax for an init-capture has changed to '& ...opt identifier initializer'
C5210 'name' is not a valid header unit reference; ignoring
C5212 'name' is not a valid named reference; treating as reference to file
C5213 'name' named reference is treated as a named partition but the name is not specified; treating as reference to file
C5214 applying 'modifier' to an operand with a volatile qualified type is deprecated in C++20
C5215 'name' a function parameter with a volatile qualified type is deprecated in C++20
C5216 'name' a volatile qualified return type is deprecated in C++20
C5217 a structured binding declaration that includes volatile is deprecated in C++20
C5218 destroying delete may not behave as intended when non-conforming switches '/Zc:sizedDealloc-' or '/Zc:alignedNew-' are used
C5219 implicit conversion from 'type-1' to 'type-2', possible loss of data
C5220 'name': a non-static data member with a volatile qualified type no longer implies%$N that compiler generated copy/move constructors and copy/move assignment operators are not trivial
C5221 xfg::rename is deprecated.

Visual Studio 2019 버전 16.6(컴파일러 버전 19.26.28805.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.25을 사용하여 표시되지 않습니다.

Warning 메시지
C5207 the simple requirement asserts the validity of expression 'e->id'. Did you mean '{ e } -> id'? You can suppress the warning using '{ e->id }'
C5208 unnamed class used in typedef name cannot declare members other than non-static data members, member enumerations, or member classes

Visual Studio 2019 버전 16.5(컴파일러 버전 19.25.28610.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.24을 사용하여 표시되지 않습니다.

Warning 메시지
C5061 the use of a comma operator as a subscript expression has been deprecated
C5062 enum direct list initialization between 'type-1' and 'type-2' is no longer supported
C5063 'std::is_constant_evaluated' always evaluates to true in manifestly constant-evaluated expressions
C5108 __VA_OPT__ is reserved for use in variadic macros
C5204 'type-name': class has virtual functions, but its trivial destructor is not virtual; instances of objects derived from this class may not be destructed correctly
C5205 delete of an abstract class 'type-name' that has a non-virtual destructor results in undefined behavior
C5206 deduced return types for coroutines is a non-standard extension

Visual Studio 2019 버전 16.4(컴파일러 버전 19.24.28314.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.23을 사용하여 표시되지 않습니다.

Warning 메시지
C5200 feature 'feature-name' requires compiler flag 'option-name'
C5201 a module declaration can appear only at the start of a translation unit unless a global module fragment is used
C5202 a global module fragment can only contain preprocessor directives
C5203 a parenthesized declarator name after 'explicit' will be considered an explicit-specifier in C++20

Visual Studio 2019 버전 16.3(컴파일러 버전 19.23.28105.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.22을 사용하여 표시되지 않습니다.

Warning 메시지
C4856 'value' is not a valid argument for '/d1initAll:FillPattern' (value must be between 0 and 255). Command-line flag ignored
C4857 C++/CLI mode does not support C++ versions newer than C++17; setting language to /std:c++17

Visual Studio 2019 버전 16.2(컴파일러 버전 19.22.27905.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.21을 사용하여 표시되지 않습니다.

Warning 메시지
C4855 implicit capture of 'this' via '[=]' is deprecated in 'version'
C5054 operator 'operator-name': deprecated between enumerations of different types
C5055 operator 'operator-name': deprecated between enumerations and floating-point types
C5056 operator 'operator-name': deprecated for array types
C5057 header unit reference to 'name' already exists. Ignoring header unit 'header-name'
C5058 file system error: cannot find header file 'file-name' for header unit 'unit-name'
C5059 runtime checks and address sanitizer is not currently supported - disabling runtime checks
C5060 /Qpar and address sanitizer not currently supported - disabling auto-parallelization

Visual Studio 2019 버전 16.1(컴파일러 버전 19.21.27702.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.20을 사용하여 표시되지 않습니다.

Warning 메시지
C5052 Keyword 'keyword-name' was introduced in C++<version> and requires use of the 'option-name' command-line option
C5053 support for 'explicit(<expr>)' in C++17 and earlier is a vendor extension

Visual Studio 2019 RTW(컴파일러 버전 19.20.27004.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.15을 사용하여 표시되지 않습니다.

Warning 메시지
C4848 support for standard attribute 'no_unique_address' in C++17 and earlier is a vendor extension
C4854 binding dereferenced null pointer to reference has undefined behavior
C5051 attribute 'attribute-name' requires at least 'standard-level'; ignored

Visual Studio 2017 버전 15.8(컴파일러 버전 19.15.26726.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.14을 사용하여 표시되지 않습니다.

Warning 메시지
C4643 Forward declaring 'identifier' in namespace std is not permitted by the C++ Standard.
C4644 usage of the macro-based offsetof pattern in constant expressions is non-standard; use offsetof defined in the C++ standard library instead
C4845 '__declspec(no_init_all)' is ignored if '/d1initall[0|1|2|3]' was not specified on the command line
C4846 'value' is not a valid argument for '/d1initall': command-line flag ignored
C4847 '__declspec(no_init_all)' can only be applied to a function, a class type, or a local variable: ignored
C4866 compiler may not enforce left-to-right evaluation order for call to 'function'
C5046 'function': Symbol involving type with internal linkage not defined
C5047 use of nonstandard __if_exists with modules is not supported
C5048 Use of macro 'macroname' may result in non-deterministic output
C5049 'string': Embedding a full path may result in machine-dependent output
C5050 Possible incompatible environment while importing module 'module_name': issue
C5100 __VA_ARGS__ is reserved for use in variadic macros
C5101 use of preprocessor directive in function-like macro argument list is undefined behavior
C5102 ignoring invalid command-line macro definition 'value'
C5103 pasting 'token1' and 'token2' does not result in a valid preprocessing token
C5104 found 'string1#string2' in macro replacement list, did you mean 'string1""#string2'?
C5105 macro expansion producing 'defined' has undefined behavior
C5106 macro redefined with different parameter names
C5107 missing terminating 'char' character

Visual Studio 2017 버전 15.7(컴파일러 버전 19.14.26428.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.13을 사용하여 표시되지 않습니다.

Warning 메시지
C4642 'issue': could not import the constraints for generic parameter 'parameter'
C5045 Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified

Visual Studio 2017 버전 15.6(컴파일러 버전 19.13.26128.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.12을 사용하여 표시되지 않습니다.

Warning 메시지
C5044 An argument to command-line option option points to a path 'path' that does not exist

Visual Studio 2017 버전 15.5(컴파일러 버전 19.12.25830.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.11을 사용하여 표시되지 않습니다.

Warning 메시지
C4843 'type1': An exception handler of reference to array or function type is unreachable, use 'type2' instead
C4844 'export module module_name;' is now the preferred syntax for declaring a module interface
C5039 'function': pointer or reference to potentially throwing function passed to extern C function under -EHc. Undefined behavior may occur if this function throws an exception.
C5040 dynamic exception specifications are valid only in C++14 and earlier; treating as noexcept(false)
C5041 'definition': out-of-line definition for constexpr static data member is not needed and is deprecated in C++17
C5042 'declaration': function declarations at block scope cannot be specified 'inline' in standard C++; remove 'inline' specifier
C5043 'specification': exception specification does not match previous declaration

Visual Studio 2017 버전 15.3(컴파일러 버전 19.11.25506.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.10을 사용하여 표시되지 않습니다.

Warning 메시지
C4597 undefined behavior: description
C4604 'type': passing argument by value across native and managed boundary requires valid copy constructor. Otherwise the runtime behavior is undefined
C4749 conditionally supported: description
C4768 __declspec attributes before linkage specification are ignored
C4834 discarding return value of function with 'nodiscard' attribute
C4841 non-standard extension used: extension
C4842 the result of 'offsetof' applied to a type using multiple inheritance is not guaranteed to be consistent between compiler releases
C4869 'nodiscard' may only be applied to classes, enumerations, and functions with non-void return type
C4984 'if constexpr' is a C++17 language extension
C5033 '*storage-class*' is no longer a supported storage class
C5034 use of intrinsic 'intrinsic' causes function function to be compiled as guest code
C5035 use of feature 'feature' causes function function to be compiled as guest code
C5036 varargs function pointer conversion when compiling with /hybrid:x86arm64 'type1' to 'type2'
C5037 '*member-function*': an out-of-line definition of a member of a class template cannot have default arguments
C5038 data member 'member1' will be initialized after data member 'member2'

Visual Studio 2017 RTM(컴파일러 버전 19.10.25017.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.00을 사용하여 표시되지 않습니다.

Warning 메시지
C4468 'fallthrough': attribute must be followed by a case label or a default label
C4698 'feature' is for evaluation purposes only and is subject to change or removal in future updates.
C4839 non-standard use of class 'class' as an argument to a variadic function
C4840 non-portable use of class 'class' as an argument to a variadic function

Visual Studio 2015 업데이트 3(컴파일러 버전 19.00.24215.1)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.00.23918을 사용하여 표시되지 않습니다.

Warning 메시지
C4467 usage of ATL attributes is deprecated
C4596 'name': illegal qualified name in member declaration
C4598 '#include <header>': header number number in the source does not match source at that position
C4599 'argument': source argument number number does not match source

Visual Studio 2015 업데이트 2(컴파일러 버전 19.00.23918.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.00.23506을 사용하여 표시되지 않습니다.

Warning 메시지
C4466 Could not perform coroutine heap elision
C4595 'class': non-member operator new or delete functions may not be declared inline
C4828 The file contains a character starting at offset 0xvalue that is illegal in the current source character set (codepage number).
C4868 compiler may not enforce left-to-right evaluation order in braced initializer list

Visual Studio 2015 업데이트 1(컴파일러 버전 19.00.23506.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:19.00.23026을 사용하여 표시되지 않습니다.

Warning 메시지
C4426 optimization flags changed after including header, may be due to #pragma optimize()
C4654 Code placed before include of precompiled header line will be ignored. Add code to precompiled header.
C5031 #pragma warning(pop): likely mismatch, popping warning state pushed in different file
C5032 detected #pragma warning(push) with no corresponding #pragma warning(pop)

Visual Studio 2015 RTM(컴파일러 버전 19.00.23026.0)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:18을 사용하여 표시되지 않습니다.

Warning 메시지
C4427 'error': overflow in constant division, undefined behavior
C4438 'type': cannot be called safely in /await:clrcompat mode. If 'type' calls into the CLR it may result in CLR head corruption
C4455 'operator name': literal suffix identifiers that do not start with an underscore are reserved
C4456 declaration of 'name' hides previous local declaration
C4457 declaration of 'name' hides function parameter
C4458 declaration of 'name' hides class member
C4459 declaration of 'name' hides global declaration
C4462 'type' : cannot determine the GUID of the type. Program may fail at runtime.
C4463 overflow; assigning value to bit-field that can only hold values from value to value
C4473 'function' : not enough arguments passed for format string
C4474 'function' : too many arguments passed for format string
C4475 'function' : length modifier 'modifier' cannot be used with type field character 'character' in format specifier
C4476 'function' : unknown type field character 'character' in format specifier
C4477 'function' : format string 'string' requires an argument of type 'type', but variadic argument number has type 'type'
C4478 'function' : positional and non-positional placeholders cannot be mixed in the same format string
C4494 'type' : Ignoring __declspec(allocator) because the function return type is not a pointer or reference
C4495 nonstandard extension '__super' used: replace with explicit base class name
C4496 nonstandard extension 'for each' used: replace with ranged-for statement
C4497 nonstandard extension 'sealed' used: replace with 'final'
C4498 nonstandard extension used: 'extension'
C4499 'specialization': an explicit specialization cannot have a storage class (ignored)
C4576 a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax
C4577 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc
C4578 'abs': conversion from 'type' to 'type', possible loss of data (Did you mean to call 'name' or to #include <cmath>?)
C4582 'type': constructor is not implicitly called
C4583 'type': destructor is not implicitly called
C4587 'type': behavior change: constructor is no longer implicitly called
C4588 'type': behavior change: destructor is no longer implicitly called
C4589 Constructor of abstract class 'type' ignores initializer for virtual base class 'type'
C4591 'constexpr' call-depth limit of number exceeded (/constexpr:depth<NUMBER>)
C4592 'type': symbol will be dynamically initialized (implementation limitation)
C4593 'type': 'constexpr' call evaluation step limit of value exceeded; use /constexpr:steps<NUMBER> to increase the limit
C4647 behavior change: __is_pod(type) has different value in previous versions
C4648 standard attribute 'carries_dependency' is ignored
C4649 attributes are ignored in this context
C4753 Cannot find bounds for pointer; MPX intrinsic function ignored
C4771 Bounds must be created using a simple pointer; MPX intrinsic function ignored
C4774 'description' : format string expected in argument number is not a string literal
C4775 nonstandard extension used in format string 'string' of function 'function'
C4776 '%character' is not allowed in the format string of function 'function'
C4777 'description' : format string 'string' requires an argument of type 'type', but variadic argument number has type 'type'
C4778 'description' : unterminated format string 'string'
C4838 conversion from 'type' to 'type' requires a narrowing conversion
C5022 'type': multiple move constructors specified
C5023 'type': multiple move assignment operators specified
C5024 'declaration': move constructor was implicitly defined as deleted
C5025 'declaration': move assignment operator was implicitly defined as deleted
C5026 'type': move constructor was implicitly defined as deleted
C5027 'type': move assignment operator was implicitly defined as deleted
C5028 'name': Alignment specified in prior declaration (number) not specified in definition
C5029 nonstandard extension used: alignment attributes in C++ apply to variables, data members and tag types only
C5030 attribute 'attribute' is not recognized

Visual Studio 2013(컴파일러 버전 18.00.21005.1)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:17을 사용하여 표시되지 않습니다.

Warning 메시지
C4301 'type': overriding virtual function only differs from 'declaration' by const/volatile qualifier
C4316 'type': object allocated on the heap may not be aligned number
C4380 'type': A default constructor cannot be deprecated
C4388 'token': signed/unsigned mismatch
C4423 'std::bad_alloc': will be caught by class ('type') on line number
C4424 catch for 'type' preceded by 'type' on line number; unpredictable behavior may result if 'std::bad_alloc' is thrown
C4425 A SAL annotation cannot be applied to '...'
C4464 relative include path contains '..'
C4575 '__vectorcall' incompatible with the '/clr' option: converting to '__stdcall'
C4609 'type' derives from default interface 'type' on type 'type'. Use a different default interface for 'type', or break the base/derived relationship.
C4754 Conversion rules for arithmetic operations in the comparison at description(number) mean that one branch cannot be executed. Cast 'type' to 'type' (or similar type of number bytes).
C4755 Conversion rules for arithmetic operations in the comparison at description(number) mean that one branch cannot be executed in an inlined function. Cast 'type' to 'type' (or similar type of number bytes).
C4767 section name 'name' is longer than 8 characters and will be truncated by the linker
C4770 partially validated enum 'name' used as index
C4827 A public 'ToString' method with 0 parameters should be marked as virtual and override
C4882 passing functors with non-const call operators to concurrency::parallel_for_each is deprecated
C4973 'type': marked as deprecated
C4974 'type': marked as deprecated
C4981 Warbird: function 'declaration' marked as __forceinline not inlined because it contains exception semantics
C4990 Warbird: message
C4991 Warbird: function 'declaration' marked as __forceinline not inlined because protection level of inlinee is greater than the parent
C4992 Warbird: function 'declaration' marked as __forceinline not inlined because it contains inline assembly which cannot be protected

Visual Studio 2012(컴파일러 버전 17.00.51106.1)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:16을 사용하여 표시되지 않습니다.

Warning 메시지
C4330 attribute 'attribute' for section 'section' ignored
C4415 duplicate __declspec(code_seg('name'))
C4416 __declspec(code_seg(...)) contains empty string: ignored
C4417 an explicit template instantiation cannot have __declspec(code_seg(...)): ignored
C4418 __declspec(code_seg(...)) ignored on an enum
C4419 'name' has no effect when applied to private ref class 'type'.
C4435 'type': Object layout under /vd2 will change due to virtual base 'type'
C4436 dynamic_cast from virtual base 'type' to 'type' in constructor or destructor could fail with partially-constructed object
C4437 dynamic_cast from virtual base 'type' to 'type' could fail in some contexts
C4443 expected pragma parameter to be '0', '1', or '2'
C4446 'type': cannot map member 'name' into this type, due to conflict with the type name. The method was renamed to 'name'
C4447 'main' signature found without threading model. Consider using 'int main(Platform::Array<Platform::String^>^ args)'.
C4448 'type' does not have a default interface specified in metadata. Picking: 'type', which may fail at runtime.
C4449 'type' an unsealed type should be marked as '[WebHostHidden]'
C4450 'type' should be marked as '[WebHostHidden]' because it derives from 'type'
C4451 'type': Usage of ref class 'type' inside this context can lead to invalid marshaling of object across contexts
C4452 'type': public type cannot be at global scope. It must be in a namespace that is a child of the name of the output .winmd file.
C4453 'type': A '[WebHostHidden]' type should not be used on the published surface of a public type that is not '[WebHostHidden]'
C4454 'type' is overloaded by more than the number of input parameters without having [DefaultOverload] specified. Picking 'declaration' as the default overload
C4471 'name': a forward declaration of an unscoped enumeration must have an underlying type (int assumed)
C4472 'name' is a native enum: add an access specifier (private/public) to declare a managed/WinRT enum
C4492 'type': matches base ref class method 'type', but is not marked 'override'
C4493 delete expression has no effect as the destructor of 'type' does not have 'public' accessibility
C4585 'type': A WinRT 'public ref class' must either be sealed or derive from an existing unsealed class
C4586 'type': A public type cannot be declared in a top-level namespace called 'Windows'
C4695 #pragma execution_character_set: 'argument' is not a supported argument: currently only 'UTF-8' is supported
C4703 potentially uninitialized local pointer variable 'name' used
C4728 /Yl- option ignored because PCH reference is required
C4745 volatile access of 'name' cannot be honored due to its size
C4746 volatile access of 'name' is subject to /volatile:<iso | ms> setting; consider using __iso_volatile_load/store intrinsic functions
C4872 floating point division by zero detected when compiling the call graph for the concurrency::parallel_for_each at: 'description'
C4880 casting from 'type' to 'type': casting away constness from a pointer or reference may result in undefined behavior in an amp restricted function
C4881 the constructor and/or the destructor will not be invoked for tile_static variable 'type'
C4966 'description' has __code_seg annotation with unsupported segment name, annotation ignored
C4988 'type': variable declared outside class/function scope
C4989 'description': type has conflicting definitions.

Visual Studio 2010(컴파일러 버전 16.00.40219.01)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:15을 사용하여 표시되지 않습니다.

Warning 메시지
C4352 'name': intrinsic function already defined
C4573 the usage of 'type' requires the compiler to capture 'this' but the current default capture mode does not allow it
C4574 'name' is defined to be '0': did you mean to use '#if name'?
C4689 'character': unsupported character in #pragma detect_mismatch; #pragma ignored
C4751 /arch AVX flag does not apply to Intel(R) Streaming SIMD Extensions that are within inline ASM
C4752 found Intel(R) Advanced Vector Extensions; consider using the appropriate /arch AVX flag
C4837 trigraph detected: '??character' replaced by 'character'
C4986 'declaration': exception specification does not match previous declaration
C4987 nonstandard extension used: 'throw (...)'

Visual Studio 2008(컴파일러 버전 15.00.21022.08)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:14을 사용하여 표시되지 않습니다.

Warning 메시지
C4396 'type': the inline specifier cannot be used when a friend declaration refers to a specialization of a function template
C4413 'declaration': reference member is initialized to a temporary that doesn't persist after the constructor exits
C4491 'description': has an illegal IDL version format
C4603 'name': macro is not defined or definition is different after precompiled header use
C4627 'description': skipped when looking for precompiled header use
C4750 'description': function with _alloca() inlined into a loop
C4910 'type': '__declspec(dllexport)' and 'extern' are incompatible on an explicit instantiation
C4985 'declaration': attributes not present on previous declaration.

Visual Studio 2005(컴파일러 버전 14.00.50727.762)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:13을 사용하여 표시되지 않습니다.

Warning 메시지
C4272 'type': is marked __declspec(dllimport); must specify native calling convention when importing a function.
C4333 'expression': right shift by too large amount, data loss
C4334 'expression': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
C4335 Mac file format detected: please convert the source file to either DOS or UNIX format
C4342 behavior change: 'type' called, but a member operator was called in previous versions
C4350 behavior change: 'declaration' called instead of 'declaration'
C4357 param array argument found in formal argument list for delegate 'declaration' ignored when generating 'type'
C4358 'expression': return type of combined delegates is not 'void'; returned value is undefined
C4359 'type': Alignment specifier is less than actual alignment (number), and will be ignored.
C4362 'type': alignment greater than 8 bytes is not supported by CLR
C4364 #using for assembly 'name' previously seen at description(number) without as_friend attribute; as_friend not applied
C4365 'expression': conversion from 'type' to 'type', signed/unsigned mismatch
C4366 The result of the unary 'operator' operator may be unaligned
C4367 Conversion from 'type' to 'type' may cause datatype misalignment exception
C4368 cannot define 'name' as a member of managed 'type': mixed types are not supported
C4369 'type': enumerator value 'number' cannot be represented as 'type', value is 'number'
C4374 'declaration': interface method will not be implemented by non-virtual method 'declaration'
C4375 non-public method 'declaration' does not override 'declaration'
C4376 access specifier 'specifier:' is no longer supported: please use 'specifier:' instead
C4377 native types are private by default; -d1PrivateNativeTypes is deprecated
C4378 Must obtain function pointers to run initializers; consider System::ModuleHandle::ResolveMethodHandle
C4379 Version version of the common language runtime is not supported by this compiler. Using this version may cause unexpected results
C4381 'declaration': interface method will not be implemented by non-public method 'declaration'
C4382 throwing 'type': a type with __clrcall destructor or copy constructor can only be caught in /clr:pure module
C4383 'type': the meaning of dereferencing a handle can change, when a user-defined 'operator' operator exists; write the operator as a static function to be explicit about the operand
C4384 #pragma 'directive' should only be used at global scope
C4393 'type': const has no effect on description data member; ignored
C4394 'type': per-appdomain symbol should not be marked with __declspec(value)
C4395 'type': member function will be invoked on a copy of the initonly data member 'type'
C4397 DefaultCharSetAttribute is ignored
C4398 'type': per-process global object might not work correctly with multiple appdomains; consider using __declspec(appdomain)
C4399 'type': per-process symbol should not be marked with __declspec(value) when compiled with /clr:pure
C4400 'type': const/volatile qualifiers on this type are not supported
C4412 'declaration': function signature contains type 'type'; C++ objects are unsafe to pass between pure code and mixed or native.
C4429 possible incomplete or improperly formed universal-character-name
C4430 missing type specifier - int assumed. Note: C++ does not support default-int
C4431 missing type specifier - int assumed. Note: C no longer supports default-int
C4434 a static constructor must have private accessibility; changing to private access
C4439 'type': function definition with a managed type in the signature must have a __clrcall calling convention
C4441 calling convention of 'convention' ignored; 'convention' used instead
C4445 'declaration': in a managed/WinRT type a virtual method cannot be private
C4460 CLR/WinRT operator 'type', has parameter passed by reference. CLR/WinRT operator 'operator' has different semantics from C++ operator 'operator', did you intend to pass by value?
C4461 'type': this class has a finalizer '!type' but no destructor '~type'
C4470 floating-point control pragmas ignored under /clr
C4480 nonstandard extension used: specifying underlying type for enum 'type'
C4481 nonstandard extension used: override specifier 'specifier'
C4482 nonstandard extension used: enum 'type' used in qualified name
C4483 syntax error: expected C++ keyword
C4484 'type': matches base ref class method 'type', but is not marked 'virtual', 'new' or 'override'; 'new' (and not 'virtual') is assumed
C4485 'type': matches base ref class method 'type', but is not marked 'new' or 'override'; 'new' (and 'virtual') is assumed
C4486 'type': a private virtual method of a ref class or value class should be marked 'sealed'
C4487 'type': matches inherited non-virtual method 'type' but is not explicitly marked 'new'
C4488 'type': requires 'keyword' keyword to implement the interface method 'type'
C4489 'keyword': not allowed on interface method 'name'; override specifiers are only allowed on ref class and value class methods
C4490 'keyword': incorrect use of override specifier; 'type' does not match a base ref class method
C4538 'type': const/volatile qualifiers on this type are not supported
C4559 'type': redefinition; the function gains __declspec(value)
C4565 'type': redefinition; the symbol was previously declared with __declspec(value)
C4566 character represented by universal-character-name 'character' cannot be represented in the current code page (number)
C4568 'type': no members match the signature of the explicit override
C4569 'type': no members match the signature of the explicit override
C4570 'type': is not explicitly declared as abstract but has abstract functions
C4571 Informational: catch(...) semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught
C4572 [ParamArray] attribute is deprecated under /clr, use '...' instead
C4580 [attribute] is deprecated; instead specify specifiedAttribute as a base class
C4581 deprecated behavior: '"name"' replaced with 'name' to process attribute
C4606 #pragma warning: 'number' ignored; Code Analysis warnings are not associated with warning levels
C4631 MSXML or XPath unavailable, XML document comments will not be processed. description
C4632 XML document comment: description - access denied: description
C4633 XML document comment description: error: description
C4634 XML document comment description: cannot be applied: description
C4635 XML document comment description: badly-formed XML: description
C4636 XML document comment description: tag requires non-empty 'description' attribute.
C4637 XML document comment description: <include> tag discarded. description
C4638 XML document comment description: reference to unknown symbol 'description'.
C4639 MSXML error, XML document comments will not be processed. description
C4641 XML document comment has an ambiguous cross reference:
C4678 base class 'declaration' is less accessible than 'name'
C4679 'description': could not import member
C4687 'type': a sealed abstract class cannot implement an interface 'type'
C4688 'name': constraint list contains assembly private type 'declaration'
C4690 [ emitidl( pop ) ]: more pops than pushes
C4691 'type': type referenced was expected in unreferenced module 'description', type defined in current translation unit used instead
C4692 'name': signature of non-private member contains assembly private native type 'declaration'
C4693 'type': a sealed abstract class cannot have any instance members 'name'
C4694 'type': a sealed abstract class cannot have a base-class 'type'
C4720 in-line assembler reports: 'description'
C4721 'description': not available as an intrinsic
C4722 'description': destructor never returns, potential memory leak
C4726 ARM arch4/4T supports only '<cpsr_f> or <spsr_f>' with immediate value
C4727 PCH named name with same timestamp found in name and name. Using first PCH.
C4729 function too big for flow graph based warnings
C4730 'description': mixing _m64 and floating point expressions may result in incorrect code
C4731 'description': frame pointer register 'register' modified by inline assembly code
C4732 intrinsic 'intrinsic' is not supported in this architecture
C4733 Inline asm assigning to 'FS:0': handler not registered as safe handler
C4734 More than 64k line numbers in a COFF debug info section; stop emitting COFF debug line numbers for module 'module'
C4738 storing 32-bit float result in memory, possible loss of performance
C4739 reference to variable 'variable' exceeds its storage space
C4740 flow in or out of inline asm code suppresses global optimization
C4742 'variable' has different alignment in 'location' and 'location': number and number
C4743 'name' has different size in 'location' and 'location': number and number bytes
C4744 'name' has different type in 'location' and 'location': 'type' and 'type'
C4747 Calling managed 'type': Managed code may not be run under loader lock, including the DLL entrypoint and calls reached from the DLL entrypoint
C4761 integral size mismatch in argument; conversion supplied
C4764 Cannot align catch objects to greater than 16 bytes
C4788 'identifier': identifier was truncated to 'number' characters
C4789 buffer 'name' of size number bytes will be overrun; number bytes will be written starting at offset number
C4801 Return by reference is not verifiable: description
C4819 The file contains a character that cannot be represented in the current code page (number). Save the file in Unicode format to prevent data loss
C4826 Conversion from 'type' to 'type' is sign-extended. This may cause unexpected runtime behavior.
C4829 Possibly incorrect parameters to function main. Consider 'int main(Platform::Array<Platform::String^>^ argv)'
C4835 'type': the initializer for exported data will not be run until managed code is first executed in the host assembly
C4867 'type': non-standard syntax; use '&' to create a pointer to member
C4936 this __declspec is supported only when compiled with /clr or /clr:pure
C4937 'name' and 'name' are indistinguishable as arguments to 'option'
C4938 'type': Floating point reduction variable may cause inconsistent results under /fp:strict or #pragma fenv_access
C4939 #pragma vtordisp is deprecated and will be removed in a future release of Visual C++
C4947 'type': marked as obsolete
C4949 pragmas 'managed' and 'unmanaged' are meaningful only when compiled with '/clr[:option]'
C4950 'type': marked as obsolete
C4955 'description': import ignored; already imported from 'source'
C4956 'type': this type is not verifiable
C4957 'expression': explicit cast from 'type' to 'type' is not verifiable
C4958 'expression': pointer arithmetic is not verifiable
C4959 cannot define unmanaged class 'type' in /clr:safe because accessing its members yields unverifiable code
C4960 'description' is too big to be profiled
C4961 No profile data was merged into 'location', profile-guided optimizations disabled
C4962 'description': Profile-guided optimizations disabled because optimizations caused profile data to become inconsistent
C4963 'description': no profile data found; different compiler options were used in instrumented build
C4964 No optimization options were specified; profile info will not be collected
C4965 implicit box of integer 0; use nullptr or explicit cast
C4970 delegate constructor: target object ignored since 'declaration' is static
C4971 Argument order: <target object>, <target function> for delegate constructor is deprecated, use <target function>, <target object>
C4972 Directly modifying or treating the result of an unbox operation as an lvalue is unverifiable

Visual Studio 2003(컴파일러 버전 13.10.3077)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:13.00.9466을 사용하여 표시되지 않습니다.

Warning 메시지
C4343 #pragma optimize(description,off) overrides /Og option
C4344 behavior change: use of explicit template arguments results in call to 'declaration'
C4346 'type': dependent name is not a type
C4348 'declaration': redefinition of default parameter: parameter number
C4356 'type': static data member cannot be initialized via derived class
C4408 anonymous struct did not declare any data members
C4544 'declaration': default template argument ignored on this template declaration
C4545 expression before comma evaluates to a function which is missing an argument list
C4546 function call before comma missing argument list
C4547 'expression': operator before comma has no effect; expected operator with side-effect
C4548 expression before comma has no effect; expected expression with side-effect
C4549 'expression': operator before comma has no effect; did you intend 'expression'?
C4628 digraphs not supported with -Ze. Character sequence 'sequence' not interpreted as alternate token for 'token'
C4629 digraph used, character sequence 'sequence' interpreted as token 'token' (insert a space between the two characters if this is not what you intended)
C4671 'description': the copy constructor is inaccessible
C4676 'description': the destructor is inaccessible
C4677 'name': signature of non-private member contains assembly private type 'declaration'
C4686 'type': possible change in behavior, change in UDT return calling convention
C4812 obsolete declaration style: please use 'type::name' instead
C4813 'type': a friend function of a local class must have been previously declared
C4821 Unable to determine Unicode encoding type, please save the file with signature (BOM)
C4822 'type': local class member function does not have a body
C4823 'type': uses pinning pointers but unwind semantics are not enabled. Consider using /EHa
C4913 user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used
C4948 return type of 'declaration' does not match the last parameter type of the corresponding setter
C4951 'description' has been edited since profile data was collected, function profile data not used
C4952 'description': no profile data found in program database 'description'
C4953 Inlinee 'description' has been edited since profile data was collected, profile data not used
C4954 'description': not profiled (contains __int64 switch expression)

Visual Studio 2002(컴파일러 버전 13.00.9466)에 발생한 경고

이러한 경고와 이후 버전의 모든 경고는 컴파일러 옵션 /Wv:12을 사용하여 표시되지 않습니다.

Warning 메시지
C4096 'type': interface is not a COM interface; will not be emitted to IDL
C4097 expected pragma parameter to be 'restore' or 'off'
C4165 'HRESULT' is being converted to 'bool'; are you sure this is what you want?
C4183 'name': missing return type; assumed to be a member function returning 'int'
C4199 description
C4255 'name': no function prototype given: converting '()' to '(void)'
C4256 'declaration': constructor for class with virtual bases has '...'; calls may not be compatible with older versions of Visual C++
C4258 'name': definition from the for loop is ignored; the definition from the enclosing scope is used
C4263 'declaration': member function does not override any base class virtual member function
C4264 'declaration': no override available for virtual member function from base 'class'; function is hidden
C4265 'type': class has virtual functions, but destructor is not virtual instances of this class may not be destructed correctly
C4266 'declaration': no override available for virtual member function from base 'class'; function is hidden
C4267 'expression': conversion from 'size_t' to 'type', possible loss of data
C4274 #ident ignored; see documentation for #pragma comment(exestr, 'string')
C4277 imported item 'type::name' exists as both data member and function member; data member ignored
C4278 'name': identifier in type library 'description' is already a macro; use the 'rename' qualifier
C4279 'name': identifier in type library 'description' is a keyword; use the 'rename' qualifier
C4287 'expression': unsigned/negative constant mismatch
C4288 nonstandard extension used: 'name': loop control variable declared in the for-loop is used outside the for-loop scope; it conflicts with the declaration in the outer scope
C4289 nonstandard extension used: 'name': loop control variable declared in the for-loop is used outside the for-loop scope
C4293 'expression': shift count negative or too big, undefined behavior
C4295 'type': array is too small to include a terminating null character
C4296 'expression': expression is always value
C4297 'type': function assumed not to throw an exception but does
C4298 'name': identifier in type library 'description' is already a macro; renaming to '__name'
C4299 'name': identifier in type library 'description' is a keyword; renaming to '__name'
C4302 'expression': truncation from 'type' to 'type'
C4303 conversion from 'type' to 'type' is deprecated, use static_cast, __try_cast or dynamic_cast
C4314 expected pragma parameter to be '32' or '64'
C4315 'type': 'this' pointer for member 'type' may not be aligned number as expected by the constructor
C4318 passing constant zero as the length to memset
C4319 'expression': zero extending 'type' to 'type' of greater size
C4321 automatically generating an IID for interface 'type'
C4322 automatically generating a CLSID for class 'type'
C4323 re-using registered CLSID for class 'type'
C4324 'type': structure was padded due to alignment specifier
C4325 attributes for standard section 'description' ignored
C4326 return type of 'name' should be 'type' instead of 'type'
C4327 'expression': indirection alignment of LHS (number) is greater than RHS (number)
C4328 'description': indirection alignment of formal parameter number (number) is greater than the actual argument alignment (number)
C4329 alignment specifier is ignored on enum
C4336 import cross-referenced type library 'library' before importing 'description'
C4337 cross-referenced type library 'library' in 'description' is being automatically imported
C4338 #pragma description: standard section 'section' is used
C4339 'type': use of undefined type detected in CLR/WinRT meta-data - use of this type may lead to a runtime exception
C4353 nonstandard extension used: constant 0 as function expression. Use '__noop' function intrinsic instead
C4370 'declaration': layout of class has changed from a previous version of the compiler due to better packing
C4371 'declaration': layout of class may have changed from a previous version of the compiler due to better packing of member 'member'
C4373 'type': virtual function overrides 'declaration', previous versions of the compiler did not override when parameters only differed by const/volatile qualifiers
C4387 'description': was considered
C4389 'expression': signed/unsigned mismatch
C4391 'declaration': incorrect return type for intrinsic function, expected 'type'
C4392 'declaration': incorrect number of arguments for intrinsic function, expected 'number' arguments
C4407 cast between different pointer to member representations, compiler may generate incorrect code
C4420 'name': operator not available, using 'name' instead; run-time checking may be compromised
C4440 calling convention redefinition from 'description' to 'description' ignored
C4442 embedded null terminator in __annotation argument. Value will be truncated.
C4444 'name': top level '__unaligned' is not implemented in this context
C4526 'type': static member function cannot override virtual function 'declaration' override ignored, virtual function will be hidden
C4531 C++ exception handling not available on Windows CE. Use Structured Exception Handling
C4532 'description': jump out of finally block has undefined behavior during termination handling
C4533 initialization of 'declaration' is skipped by 'goto declaration'
C4534 'declaration' will not be a default constructor for class 'type' due to the default argument
C4535 calling _set_se_translator() requires /EHa
C4536 'description': type-name exceeds meta-data limit of 'number' characters
C4537 'declaration': '.' applied to non-UDT type
C4542 Skipping generation of merged injected text file, cannot write type file: 'filename': error
C4543 Injected text suppressed by attribute 'no_injected_text'
C4555 expression has no effect; expected expression with side-effect
C4557 '__assume' contains effect 'effect'
C4558 value of operand 'number' is out of range 'number - number'
C4561 '__fastcall' incompatible with the '/clr' option: converting to '__stdcall'
C4562 fully prototyped functions are required with the '/clr' option: converting '()' to '(void)'
C4564 method 'name' of class 'type' defines unsupported default parameter 'parameter'
C4584 'type': base-class 'declaration' is already a base-class of 'declaration'
C4608 Initializing multiple members of union: 'type' and 'type'
C4619 #pragma warning: there is no warning number 'number'
C4623 'type': default constructor was implicitly defined as deleted
C4624 'type': destructor was implicitly defined as deleted
C4625 'type': copy constructor was implicitly defined as deleted
C4626 'type': assignment operator was implicitly defined as deleted
C4645 function declared with 'noreturn' has a return statement
C4646 function declared with 'noreturn' has non-void return type
C4659 #pragma 'description': use of reserved segment 'name' has undefined behavior, use #pragma comment(linker, ...)
C4667 'declaration': no function template defined that matches forced instantiation
C4668 'name' is not defined as a preprocessor macro, replacing with '0' for 'value'
C4669 'expression': unsafe conversion: 'type' is a managed/WinRT type object
C4674 'name' should be declared 'static' and have exactly one parameter
C4680 'type': coclass does not specify a default interface
C4681 'type': coclass does not specify a default interface that is an event source
C4682 'type': no directional parameter attribute specified, defaulting to [in]
C4683 'declaration': event source has an 'out'-parameter; exercise caution when hooking multiple event handlers
C4684 'description': WARNING!! attribute may cause invalid code generation: use with caution
C4685 expecting '> >' found '>>' when parsing template parameters
C4700 uninitialized local variable 'name' used
C4701 potentially uninitialized local variable 'name' used
C4702 unreachable code
C4711 function 'name' selected for automatic inline expansion
C4714 function 'declaration' marked as __forceinline not inlined
C4715 'function': not all control paths return a value
C4716 'function': must return a value
C4717 'function': recursive on all control paths, function will cause runtime stack overflow
C4718 'function': recursive call has no side effects, deleting
C4719 Double constant found when Qfast specified - use 'f' as a suffix to indicate single precision
C4723 potential divide by 0
C4724 potential mod by 0
C4725 instruction may be inaccurate on some Pentiums
C4757 subscript is a large unsigned value, did you intend a negative constant?
C4772 #import referenced a type from a missing type library; 'description' used as a placeholder
C4792 function 'function' declared using sysimport and referenced from native code; import library required to link
C4794 segment of thread local storage variable 'name' changed from 'segment' to 'segment'
C4798 native code generated for p-code function 'name' with exception handler or unwind semantics
C4799 function 'name' has no EMMS instruction
C4803 'declaration': the raise method has a different storage class from that of the event, 'declaration'
C4810 value of pragma pack(show) == number
C4811 value of pragma conform(forScope, show) == value
C4820 'type': 'number' bytes padding added after type 'type'
C4905 wide string literal cast to 'type'
C4906 string literal cast to 'type'
C4912 'attribute': attribute has undefined behavior on a nested UDT
C4916 in order to have a dispid, 'type': must be introduced by an interface
C4917 'type': a GUID can only be associated with a class, interface or namespace
C4918 'character': invalid character in pragma optimization list
C4920 enum name member name=number already seen in enum name as name=number
C4921 'name': attribute value 'value' should not be multiply specified
C4925 'declaration': dispinterface method cannot be called from script
C4926 'declaration': symbol is already defined: attributes ignored
C4927 illegal conversion; more than one user-defined conversion has been implicitly applied
C4928 illegal copy-initialization; more than one user-defined conversion has been implicitly applied
C4929 'description': typelibrary contains a union; ignoring the 'embedded_idl' qualifier
C4930 'declaration': prototyped function not called (was a variable definition intended?)
C4931 we are assuming the type library was built for number-bit pointers
C4932 __identifier(description) and __identifier(description) are indistinguishable
C4934 '__delegate(multicast)' is deprecated, use '__delegate' instead
C4935 assembly access specifier modified from 'description'
C4944 'name': cannot import symbol from 'source': as 'declaration' already exists in the current scope
C4945 'name': cannot import symbol from 'source': as 'declaration' has already been imported from another assembly 'source'
C4946 reinterpret_cast used between related classes: 'declaration' and 'declaration'
C4995 'name': name was marked as #pragma deprecated
C4996 'deprecated declaration': deprecation message (or "was declared deprecated")
C4997 'type': coclass does not implement a COM interface or pseudo-interface
C4998 EXPECTATION FAILED: description(number)

참고 항목

C/C++ 컴파일러 및 빌드 도구 오류/경고
컴파일러 경고 C4000 ~ C5999
/Wv 컴파일러 옵션
기본적으로 해제되어 있는 컴파일러 경고
경고