先頭へ戻る

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

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(名前順)

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(ヘッダ別)

先頭へ戻る

__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 に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー