ホームに戻る
出典 :
関連 :
目次 :
コンパイラがサポートするC/C++のバージョンを確認する
マクロの定義値から、コンパイラがCおよびC++のどのバージョンをサポートしているかを確認することが可能である。
Cのバージョン
__STDC_VERSION__ (標準Cバージョン)の値から判別できる。
C95 よりも前、または標準C規格に準拠していない場合は定義されていない。
- 199409L : C95準拠
- 199901L : C99準拠
- 201112L : C11準拠
サンプルコード :
#include <stdio.h>
void main(void)
{
#ifdef __STDC_VERSION__
#if __STDC_VERSION__ == 201112L
puts("C11 に準拠しています。");
#elif __STDC_VERSION__ == 199901L
puts("C99 に準拠しています。");
#elif __STDC_VERSION__ == 199409L
puts("C95 に準拠しています。");
#else
puts("不明な結果です。");
#endif
#else
puts("__STDC_VERSION__ が定義されていません。");
#endif
}
C++のバージョン
__cplusplus の値から判別できる。
- 1 : C++98以前
- 199711L : C++98準拠
- 201103L : C++11準拠
- 201402L : C++14準拠
- 201703L : C++17準拠
- 202002L : C++20準拠
サンプルコード :
#include <iostream>
void main()
{
if (__cplusplus == 202002L)
std::cout << "C++20" << endl;
else if (__cplusplus == 201703L)
std::cout << "C++17" << endl;
else if (__cplusplus == 201402L)
std::cout << "C++14" << endl;
else if (__cplusplus == 201103L)
std::cout << "C++11" << endl;
else if (__cplusplus == 199711L)
std::cout << "C++98" << endl;
else
std::cout << "pre-standard C++" << endl;
}
Visual Studio における __cplusplus
オプションの指定により、__cplusplus の値が変化する。詳細は
リンク先を参照。