Как определить версию стандарта C++, используемого компилятором?

Как Вы определяете, какая версия стандарта C++ реализована Вашим компилятором? Насколько я знаю, ниже стандарты, которые я знал:

  • C++ 03
  • C++ 98
95
задан jasonline 24 February 2010 в 09:21
поделиться

4 ответа

Насколько мне известно, универсального способа сделать это не существует. Если вы посмотрите на заголовки кроссплатформенных / нескольких поддерживающих компиляторов библиотек, вы всегда найдете множество определений, которые используют специфические конструкции компилятора для определения таких вещей:

/*Define Microsoft Visual C++ .NET (32-bit) compiler */
#if (defined(_M_IX86) && defined(_MSC_VER) && (_MSC_VER >= 1300)
     ...
#endif

/*Define Borland 5.0 C++ (16-bit) compiler */
#if defined(__BORLANDC__) && !defined(__WIN32__)
     ...
#endif

Вам, вероятно, придется делать такие определения для всех компиляторов, которые вы используете.

11
ответ дан 24 November 2019 в 05:46
поделиться

В зависимости от того, чего вы хотите достичь, вам может помочь Boost.Config . Он не обеспечивает обнаружение стандартной версии, но предоставляет макросы, которые позволяют вам проверять поддержку определенного языка / функций компилятора.

6
ответ дан 24 November 2019 в 05:46
поделиться

__ cplusplus

В C ++ 0x макросу __cplusplus будет присвоено значение, которое отличается (больше) от текущего 199711L.

Часто задаваемые вопросы по C ++ 0x от BS

3
ответ дан 24 November 2019 в 05:46
поделиться

После быстрого поиска в Google :

__ STDC __ и __ STDC_VERSION __ , см. здесь

0
ответ дан 24 November 2019 в 05:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: