如何使生成的 autotools ./configure 强制 C11 的 _Generic 的可用性?

How to make autotools generated ./configure enforce availability of C11's _Generic?

我有一个 autotools 项目,它需要一个支持 C11 的 _Generic 特性的编译器。

Clang 2.3 和 gcc 4.9 支持此功能,但 gcc 4.8.2(随 Ubuntu 14.04LTS 提供)不支持。

(令人困惑的是 gcc 4.8.2 支持 --std=c11,但不支持该标准的 _Generic 特性。)

是否有 configure.ac 的宏来强制使用 _Generic 兼容的编译器?

没有针对此的内置测试,但我认为您可以使用 AC_COMPILE_IFELSE 轻松完成。手册解释了所有细节,但基本上你会使用 _Generic 作为参数给它一个测试程序,然后调用失败案例 AC_MSG_ERROR.

不过,在某些情况下,我认为最好不要检查您打算无条件使用的语言功能。您可以只使用它们并让编译失败。