易百教程

C11字符串函数支持

默认字符串处理函数不安全。C11标准包括更安全的字符串处理函数的可选版本。
所有可选的C11函数都具有以_s结尾的名称。要确定标准库是否支持可选功能,请使用以下代码:

#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;
}

根据C11标准实现可选功能的编译器将定义符号__STDC_LIB_EXT1__
此代码使用预处理程序指令插入两个printf()语句之一,具体取决于是否定义了符号__STDC_LIB_EXT1__

要使用string.h中的可选函数,请在源文件中定义__STDC_WANT_LIB_EXT1__符号,要在的include <string.h>指令之前指定:

#define __STDC_WANT_LIB_EXT1__ 1 // Make optional versions of functions available
#include <string.h> // Header for string functions

如果未将此符号定义为1,则只有标准的字符串处理函数集可用。