#ifndef PWARNINGS_H
#define PWARNINGS_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* See also pdiagnostics.h headers for per file control of common
* warnings.
*
* This file is intended for global disabling of warnings that shouldn't
* be present in C11 or perhaps C99, or a generally just noise where
* recent clang / gcc compile cleanly with high warning levels.
*/
#if defined(_MSC_VER)
/* Needed when flagging code in or out and more. */
#pragma warning(disable: 4127) /* conditional expression is constant */
/* happens also in MS's own headers. */
#pragma warning(disable: 4668) /* preprocessor name not defined */
/* MSVC does not respect double parenthesis for intent */
#pragma warning(disable: 4706) /* assignment within conditional expression */
/* `inline` only advisory anyway. */
#pragma warning(disable: 4710) /* function not inlined */
/* Well, we don't intend to add the padding manually. */
#pragma warning(disable: 4820) /* x bytes padding added in struct */
/*
* Don't warn that fopen etc. are unsafe
*
* Define a compiler flag like `-D_CRT_SECURE_NO_WARNINGS` in the build.
* For some reason it doesn't work when defined here.
*
* #define _CRT_SECURE_NO_WARNINGS
*/
/*
* Anonymous union in struct is valid in C11 and has been supported in
* GCC and Clang for a while, but it is not C99. MSVC also handles it,
* but warns. Truly portable code should perhaps not use this feature,
* but this is not the place to complain about it.
*/
#pragma warning(disable: 4201) /* nonstandard extension used: nameless struct/union */
#endif /* _MSV_VER */
#ifdef __cplusplus
}
#endif
#endif /* PWARNINGS_H */