附录#
MSVC 的命令行选项#
MSVC (即 Visual Studio 系列, 不包括 VS Code) 推荐的错误检查选项 (摘自 cppbestpractices: Use the Tools Available - compilers - MSVC):
你应该默认启用的:
/permissive- /W4 /w14640根据需要添加
/permissive-Enforces standards conformance./W4All reasonable warnings/w14242'identfier': conversion from 'type1' to 'type1', possible loss of data/w14254'operator': conversion from 'type1:field_bits' to 'type2:field_bits', possible loss of data/w14263'function': member function does not override any base class virtual member function/w14265'classname': class has virtual functions, but destructor is not virtual instances of this class may not be destructed correctly/w14287'operator': unsigned/negative constant mismatch/we4289nonstandard extension used: 'variable': loop control variable declared in the for-loop is used outside the for-loop scope/w14296'operator': expression is always 'boolean_value'/w14311'variable': pointer truncation from 'type1' to 'type2'/w14545expression before comma evaluates to a function which is missing an argument list/w14546function call before comma missing argument list/w14547'operator': operator before comma has no effect; expected operator with side-effect/w14549'operator': operator before comma has no effect; did you intend 'operator'?/w14555expression has no effect; expected expression with side-effect/w14619pragma warning: there is no warning number 'number'/w14640Enable warning on thread un-safe static member initialization/w14826Conversion from 'type1' to 'type_2' is sign-extended. This may cause unexpected runtime behavior./w14905wide string literal cast to 'LPSTR'/w14906string literal cast to 'LPWSTR'/w14928illegal copy-initialization; more than one user-defined conversion has been implicitly applied