1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
//
// warningcontrol.h
//
// Header file to globally control the warning settings for the entire Viper build.
// You do not need to explicitly include this file; rather, it gets included
// on the command line with a /FI (force include) directive. This is controlled
// in sources.vip.
//
// KEEP THIS LIST SORTED!
//
#if defined(_MSC_VER)
#pragma warning(disable :4001) // "nonstandard extension 'single line comment' was used"
#pragma warning(error :4007) // 'main' : must be __cdecl
#pragma warning(disable :4010) // "single-line comment contains line-continuation character"
#pragma warning(error :4013) // 'function' undefined - assuming extern returning int
#pragma warning(disable :4022) // "'%s' : pointer mismatch for actual parameter %d"
#pragma warning(disable :4047) // "'%$L' : '%$T' differs in levels of indirection from '%$T'"
#pragma warning(disable :4053) // "one void operand for '?:'"
#pragma warning(disable :4056) // "overflow in floating-point constant arithmetic"
#pragma warning(disable :4061) // "enumerate '%$S' in switch of enum '%$S' is not explicitly handled by a case label"
#pragma warning(error :4071) // no function prototype given
#pragma warning(error :4072) // no function prototype given (fastcall)
#pragma warning(3 :4092) // sizeof returns 'unsigned long'
#pragma warning(disable :4100) // "'%$S' : unreferenced formal parameter"
#pragma warning(disable :4101) // "'%$S' : unreferenced local variable"
//#pragma warning(error :4102) // "'%$S' : unreferenced label"
#pragma warning(3 :4121) // structure is sensitive to alignment
#pragma warning(disable :4127) // "conditional expression is constant"
#pragma warning(3 :4125) // decimal digit in octal sequence
#pragma warning(3 :4130) // logical operation on address of string constant
#pragma warning(3 :4132) // const object should be initialized
#pragma warning(error :4171) // no function prototype given (old style)
#pragma warning(4 :4177) // pragma data_seg s/b at global scope
#pragma warning(disable :4201) // "nonstandard extension used : nameless struct/union"
#pragma warning(disable :4204) // "nonstandard extension used : non-constant aggregate initializer"
#pragma warning(4 :4206) // Source File is empty
#pragma warning(3 :4212) // function declaration used ellipsis
#pragma warning(error :4259) // pure virtual function was not defined
#pragma warning(disable :4291) // delete not defined for new, c++ exception may cause leak
#pragma warning(disable :4302) // truncation from '%$S' to '%$S'
#pragma warning(disable :4311) // pointer truncation from '%$S' to '%$S'
#pragma warning(disable :4312) // '<function-style-cast>' : conversion from '%$S' to '%$S' of greater size
#pragma warning(disable :4334) // result of 32-bit shift implicitly converted to 64 bits
#pragma warning(disable :4345) // behavior change: an object of POD type constructed with an initializer of the form () will be default-initialized
#pragma warning(disable :4430) // missing type specifier: C++ doesn't support default-int
#pragma warning(disable :4477) // format string '%$S' requires an argument of type '%$S', but variadic argument %d has type '%$S'
#pragma warning(3 :4509) // "nonstandard extension used: '%$S' uses SEH and '%$S' has destructor"
//
// But beware of doing a return from inside such a try block:
//
// int foo()
// {
// ClassWithDestructor c;
// __try {
// return 0;
// } __finally {
// printf("in finally");
// }
//
// as (it's a bug) the return value gets toasted. So DON'T casually
// dismiss this warning if you're compiling w/o CXX EH turned on (the default).
#pragma warning(3 :4530) // C++ exception handler used, but unwind semantics are not enabled. Specify -GX
#pragma warning(error :4551) // Function call missing argument list
#pragma warning(error :4700) // Local used w/o being initialized
#pragma warning(disable :4706) // assignment within conditional expression
#pragma warning(error :4806) // unsafe operation involving type 'bool'
#pragma warning(disable :4995) // '_OLD_IOSTREAMS_ARE_DEPRECATED': name was marked as #pragma deprecated
#if defined(_DEBUG) && (!defined(_MSC_FULL_VER) || (_MSC_FULL_VER <= 181040116))
// The CLR header file check.h, macro CHECK_MSG_EX, can create unreachable code if the LEAVE_DEBUG_ONLY_CODE
// macro is not empty (such as it is defined in contract.h) and the _RESULT macro expands to "return".
// Checked-in compilers used by the TFS-based desktop build (e.g., version 18.10.40116.8) started reporting
// unreachable code warnings when debugholder.h was changed to no longer #define "return" to something relatively
// complex. However, newer compilers, such as Visual Studio 2015, used to build the CLR from the open source
// GitHub repo, still do not report this warning. We don't want to disable this warning for open source build,
// which will use a newer compiler. Hence, only disable it for older compilers.
#pragma warning(disable :4702) // unreachable code
#endif
#endif // defined(_MSC_VER)
|