FEAT
3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
compiler_microsoft.hpp
Go to the documentation of this file.
1
// FEAT3: Finite Element Analysis Toolbox, Version 3
2
// Copyright (C) 2010 by Stefan Turek & the FEAT group
3
// FEAT3 is released under the GNU General Public License version 3,
4
// see the file 'copyright.txt' in the top level directory for details.
5
6
#pragma once
7
15
#if !defined(FEAT_COMPILER) && defined(_MSC_VER)
16
17
// define FEAT_COMPILER_MICROSOFT macro
18
# define FEAT_COMPILER_MICROSOFT _MSC_FULL_VER
19
20
// define compiler version string
21
# define FEAT_COMPILER ("Microsoft Visual C++ "
FEAT_STRINGIFY(_MSC_FULL_VER))
22
23
# define FEAT_PRAGMA_IVDEP __pragma(loop(ivdep))
24
25
# define FEAT_DISABLE_WARNINGS __pragma(warning(push, 0))
26
# define FEAT_RESTORE_WARNINGS __pragma(warning(pop))
27
28
# define FORCE_INLINE __forceinline
29
30
// define the noinline specifier
31
# define NOINLINE __declspec(noinline)
32
33
// C4061: enumerator 'identifier' in switch of enum 'enumeration' is not explicitly handled by a case label
34
// This warning is emitted when a 'switch' handles one or more cases using a 'default' block.
35
// Note: If there are unhandled cases and there is no default block, the compiler emits a C4062 warning.
36
# pragma warning(disable: 4061)
37
38
// C4127: conditional expression is constant
39
// This warning arises for instance in an expression like 'if(true)'.
40
# pragma warning(disable: 4127)
41
42
// C4180: qualifier applied to function type has no meaning; ignored
43
// This warning arises when a non-pointer return type of a function is declared as 'const'.
44
# pragma warning(disable: 4180)
45
46
// C4503: 'identifier': decorated name length exceeded, name was truncated
47
// This warning arises from heavy template nesting, blowing the compiler's limit on maximal name lengths.
48
// Running into this warning does not affect the correctness of the program, however, it might confuse
49
// the debugger.
50
# pragma warning(disable: 4503)
51
52
// C4512: 'class': assignment operator could not be generated
53
# pragma warning(disable: 4512)
54
55
// C4514: 'function': unreferenced inline function has been removed
56
// This is an annoying optimization information.
57
# pragma warning(disable: 4514)
58
59
// C4555: expression has no effect; expected expression with side-effect
60
# pragma warning(disable: 4555)
61
62
// C4571: Informational: catch(...) semantics changed since Visual C++ 7.1;
63
// structured exceptions (SEH) are no longer caught
64
# pragma warning(disable: 4571)
65
66
// C4625: 'derived class': copy constructor could not be generated because
67
// base class copy constructor is inaccessible
68
// This warning arises from our non-copyable instantiation policy.
69
# pragma warning(disable: 4625)
70
71
// C4626: 'derived class': assignment operator could not be generated because
72
// base class assignment operator is inaccessible
73
// This warning arises from our non-copyable instantiation policy.
74
# pragma warning(disable: 4626)
75
76
// C4702: unreachable code
77
// This warning is emitted in any case where the compiler detects a statement which will never be executed.
78
// This happens e.g. in for-loops which always perform zero iterations due to the chosen template parameters,
79
// buzzword 'dead code elimination'.
80
# pragma warning(disable: 4702)
81
82
// C4710: 'function': function not inlined
83
// This is an annoying optimization information.
84
# pragma warning(disable: 4710)
85
86
// C4711: function 'function' selected for inline expansion
87
// This is an annoying optimization information.
88
# pragma warning(disable: 4711)
89
90
// C4738: storing 32-bit float result in memory, possible loss of performance
91
// This is an optimization warning, which arises from the strict fp-model.
92
# pragma warning(disable: 4738)
93
94
// C4820: 'bytes' bytes padding added after construct 'member_name'
95
// This warning is disabled as it is mass-produced when compiling standard libraries.
96
# pragma warning(disable: 4820)
97
98
// C4883: function size suppresses optimizations
99
// This is an annoying optimization information.
100
# pragma warning(disable: 4883)
101
102
// C4938: 'var' : Floating point reduction variable may cause inconsistent results
103
// under /fp:strict or #pragma fenv_access
104
// This warning is issued when reducing floating point variables via OpenMP and
105
// it has been enabled because it only states the obvious effects of multithreading.
106
# pragma warning(disable: 4938)
107
108
// C5024: 'class' : move constructor was implicitly defined as deleted
109
// C5025: 'class' : move assignment operator was implicitly defined as deleted
110
// C5026: 'class' : move constructor was implicitly defined as deleted because
111
// a base class move constructor is inaccessible or deleted
112
// C5027: 'class' : move assignment operator was implicitly defined as deleted because
113
// a base class move assignment operator is inaccessible or deleted
114
# pragma warning(disable: 5024)
115
# pragma warning(disable: 5025)
116
# pragma warning(disable: 5026)
117
# pragma warning(disable: 5027)
118
119
// disable CRT security warnings for standard C/C++ library functions
120
#ifndef _CRT_SECURE_NO_WARNINGS
121
# define _CRT_SECURE_NO_WARNINGS 1
122
#endif
123
124
#endif
// !defined(FEAT_COMPILER) && defined(_MSC_VER)
kernel
util
compiler_microsoft.hpp
Generated by
1.9.5