MSVC *never* defines __STDC__ by default. It currently supports a dialect of C99 by default. This macro can be defined if MSVC's C11 or C17 mode is used (with /std:c11 or /std:c17), with the /Zc:__STDC__ compiler flag. Defining this macro would have unfortunate consequences:
> This option is a source breaking change. Due to the behavior of the > UCRT, which doesn't expose POSIX functions when __STDC__ is 1, it > isn't possible to define this macro for C by default without > introducing breaking changes to the stable language versions. https://learn.microsoft.com/en-us/cpp/build/reference/zc-stdc?view=msvc-170 So avoid testing __STDC__ when MSVC is used. --- lib/autoconf/c.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4 index 0058c2f2..306ee63e 100644 --- a/lib/autoconf/c.m4 +++ b/lib/autoconf/c.m4 @@ -1123,7 +1123,7 @@ ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ -#if !defined __STDC__ +#if !defined __STDC__ && !defined _MSC_VER # error "Compiler does not advertise C89 conformance" #endif -- 2.44.0