ホームに戻る
出典 :
C++ バージョンを確認する | Delft スタック /Zc:__cplusplus (更新された __cplusplus マクロの有効化) | Microsoft Learn
関連 :
C99 C++11 標準の定義済みマクロ
目次 :

コンパイラがサポートするC/C++のバージョンを確認する

マクロの定義値から、コンパイラがCおよびC++のどのバージョンをサポートしているかを確認することが可能である。

Cのバージョン

__STDC_VERSION__ (標準Cバージョン)の値から判別できる。
C95 よりも前、または標準C規格に準拠していない場合は定義されていない。
サンプルコード :
#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 の値から判別できる。
サンプルコード :
#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 の値が変化する。詳細は リンク先を参照。