shared: avoid checking for __STDC_VERSION__

Since we pass -std=gnu99 to the compiler __STDC_VERSION__ is defined to
199901. Even in this case we can use _Noreturn. Delegate the testing to
the configure phase with a compile test.

In future we want to stop using AC_PROG_CC_99 and start using the new
AC_PROG_CC from autoconf 2.70, which tries to choose the most recent
standard.
This commit is contained in:
Lucas De Marchi 2015-02-26 13:02:04 -03:00
parent 481ad14550
commit 16a62c7ab3
2 changed files with 9 additions and 1 deletions

View File

@ -65,6 +65,14 @@ AC_COMPILE_IFELSE(
AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])])
AC_MSG_CHECKING([whether _Noreturn is supported])
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE([[_Noreturn int foo(void) { exit(0); }]])],
[AC_DEFINE([HAVE_NORETURN], [1], [Define if _Noreturn is available])
AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])])
#####################################################################
# --with-
#####################################################################

View File

@ -63,7 +63,7 @@
/* Define C11 noreturn without <stdnoreturn.h> and even on older gcc
* compiler versions */
#ifndef noreturn
#if __STDC_VERSION__ >= 201112L
#if defined(HAVE_NORETURN)
#define noreturn _Noreturn
#else
#define noreturn __attribute__((noreturn))