由于快速的Google搜索未找到任何内容,因此我将尝试在此处询问(由于涉及gcc / clang的许多人都在这里闲逛)__STDC_LIB_EXT1__-gcc / clang 的状态是什么?我们正在开发一个跨平台应用程序,我想使用其中的一些安全范围检查功能<stdio.h>(奇迹般的功能在Visual Studio 2017中可用),但是无法使用Xcode 9.2编译代码。我认为也许Xcode使用的Clang版本已经过时,但是Ubuntu上的gcc 6.3.0的行为相同。我正在尝试将tmpnam_s与以下示例一起使用:
#if defined(__STDC_LIB_EXT1__)
#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#else
#error "__STDC_LIB_EXT1__ not defined"
#endif
int main(int argc, char** argv)
{
char t[L_tmpnam_s];
tmpnam_s(t, L_tmpnam_s);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是编译失败,未定义宏:
gcc -std=c11 test.c
test.c:5:2: error: #error "__STDC_LIB_EXT1__ not defined"
#error "__STDC_LIB_EXT1__ not defined"
^~~~~
Run Code Online (Sandbox Code Playgroud)
我是在做错什么,还是对此功能集的支持很差?