2014-12-18 2 views
0

В Xcode6, что такое «компилятор по умолчанию» для диалекта языка C++.для XCode, по умолчанию диалект языка C++?

Я использую C++ новой функции зЬй: макс (а, б, в)

, если я использую «компилятор по умолчанию», он не смог собрать.

Когда я перешел на «C++ 11 или GNUC++ 11», он компилируется отлично.

Мне интересно, является ли по умолчанию компилятор C++ 98?

+0

Согласно оператору быстрой справки, это 'GNU ++ 98'. – Desdenova

ответ

3

Я бежал под кодом, чтобы получить - GNU C++ 98.

#include <iostream> 

int main() 
{ 

//gnu mode 
#ifndef __STRICT_ANSI__ 
    std::cout << "GNU - "; 
#endif 

// C++ iso standard 
#if __cplusplus == 199711L 
    std::cout << "C++98" << std::endl; 
#elif __cplusplus == 201103L 
    std::cout << "C++11" << std::endl; 
#elif __cplusplus > 201103L 
    std::cout << "C++14" << std::endl; 
#endif 

} 

Макросы выбран

  1. __cplusplus - От НКУ онлайн documentation

    В зависимости от стандарта языка, выбранного, значение макроса 199711L, в соответствии с мандатом 1998 C++ стандарт; 201103L, за 2011 год Стандарт C++; неопределенное значение, строго превышающее 201103L для , экспериментальные языки, включенные -std = C++ 1y и -std = gnu ++ 1y.

  2. __STRICT_ANSI__ - От лязга пользователя manual

    Различия между всеми с * и гну * мод => с * режимы определяют __STRICT_ANSI__

В качестве примечания, __STRICT_ANSI__ для стандартного дифференцирования GNU также можно найти из этого SO answer

$ g++ -E -dM -std=c++11 -x c++ /dev/null >b 
$ g++ -E -dM -std=gnu++11 -x c++ /dev/null >a 
$ diff -u a b 
--- a 2014-12-19 12:27:11.000000000 +0530 
+++ b 2014-12-19 12:27:05.000000000 +0530 
@@ -144,6 +144,7 @@ 
#define __STDC_UTF_16__ 1 
#define __STDC_UTF_32__ 1 
#define __STDC__ 1 
+#define __STRICT_ANSI__ 1 
#define __UINTMAX_TYPE__ long unsigned int 
#define __USER_LABEL_PREFIX__ _ 
#define __VERSION__ "4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.54)"