检查编译器对C11 标准中可选函数(以_s结尾)的支持

很容易确定 C 编译器附带的标准库是否支持这些可选函数。只需要编译并执行以下代码:

#include <stdio.h>

int main (void)
{
#if  defined  __STDC_LIB_EXT1__
     printf("Optional functions are defined.\n"):
#else
     printf("Optional functions are not defined.\n"):
#endif
      return 0;
}

如果该编译器支持这些可选函数,运行后就会输出消息:"Optional functions are defined."

如果需要使用可选函数,需要在代码的第一行定义 __STDC_WANT_LIB_EXT1__ 符号,来表示值1,如下:

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>

为啥要这样做?

原因是它不会中断推出 C11 标准之前编写的旧代码。显然,旧代码可能使用了一个或多个新函数名。这样就容易与 C11 库产生名称冲突。出现这种冲突时,把 __STDC_WANT_LIB_EXT1__ 定义为 0,禁止使用可选函数,旧代码就可以用 C11 编译器编译了。

在这里,我推荐两个免费的 C语言编译器,它们都支持C11 :

2018-07-03 23:54:07 星期二

点赞
  1. 垃圾佬说道:
    Google Chrome Windows 10

    :huaji:

发表评论

电子邮件地址不会被公开。必填项已用 * 标注