由于快速谷歌搜索没有找到任何东西,我会在这里尝试询问(因为很多参与 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;
}
但是由于未定义宏而编译失败:
gcc -std=c11 test.c
test.c:5:2: error: #error "__STDC_LIB_EXT1__ not defined"
#error "__STDC_LIB_EXT1__ not defined"
^~~~~
我做错了什么还是这个功能集的支持很差?