Google で簡単に検索しても何も見つからなかったので、ここで質問してみます (gcc/clang に関係する多くの人がここにたむろしているので) - __STDC_LIB_EXT1__
gcc/clang のステータスは? 私たちはクロスプラットフォームアプリケーションを開発しており、(Visual Studio 2017 で奇跡的に利用できる) 安全な境界チェック機能のいくつかを使用したかった<stdio.h>
のですが、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"
^~~~~
何か間違ったことをしているのですか、それともこの関数セットのサポートが不十分なのでしょうか?