C言語編 標準ライブラリのリファレンス __STDC__

先頭へ戻る

__STDC__

概要 コンパイラが規格に合致しているかどうか。
ヘッダ なし(事前定義マクロである)
形式
置換結果 コンパイラが、標準規格に合致していれば 1 に置換される。
詳細 コンパイラが規格以前のものであれば、恐らくこのマクロは定義されていない。C89以降の時代のものであるが、規格に準拠していない場合には、定義されていない可能性も、1以外に置換される可能性もあるが、少なくとも 1 に置換されることはないことを意図している。
コンパイラによっては、設定を変更することによって、標準への準拠の度合いを変えられることがある。詳しくは、コンパイラのマニュアルを参照のこと。
注意
使用例
#include <stdio.h>

int main(void)
{
#if __STDC__ == 1
    puts( "このコンパイラは規格に準拠しています。" );
#else
    puts( "このコンパイラは規格に準拠していません。" );
#endif

    return 0;
}

実行結果 (VisualStudio):

このコンパイラは規格に準拠していません。

実行結果 (clang):

このコンパイラは規格に準拠しています。
関連 C95以降ならば、__STDC_VERSION__ を調べることで、いつの時代の規格に準拠しているか判断できる。
C99 では、__STDC_HOSTED____STDC_IEC_559____STDC_IEC_559_COMPLEX____STDC_ISO_10646__ が新たに定義されている。
解説章 第29章


参考リンク



更新履歴

'2018/4/3 C++ での事情に関する記述を削除。

'2018/4/2 「VisualC++」という表現を「VisualStudio」に統一。

'2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


はてなブックマーク Pocket に保存 Twitter でツイート Twitter をフォロー
Facebook でシェア Google+ で共有 LINE で送る rss1.0 取得ボタン RSS
管理者情報 プライバシーポリシー