Каков стандарт C ++ по умолчанию в проекте Eclipse CDT? - PullRequest
0 голосов
/ 29 апреля 2018

Я использую Eclipse CDT 3.8.1 с GCC Cross Compiler 8.6.0. Я знаю, как изменить стандарт C ++ в свойствах проекта, но я не знаю, какой стандарт используется по умолчанию.

Я знаю, что по умолчанию это не C ++ 11, а на странице поддержки языка Eclipse не упоминается C ++ 03, поэтому я подозреваю, что по умолчанию это C ++ 98. Однако Eclipse CDT должен поддерживать C ++ 03, поскольку добавление флага компилятора -std = c ++ 03 не вызывает никаких ошибок. https://www.eclipse.org/community/eclipse_newsletter/2017/april/article3.php

Что является стандартом по умолчанию при создании нового проекта?

1 Ответ

0 голосов
/ 29 апреля 2018

Сам парсер Eclipse не имеет представления о стандартном режиме C ++. Он распознает все функции C ++, которые были реализованы в его синтаксическом анализаторе (который на момент написания этой статьи представлял собой все функции C ++ 98 и C ++ 11, некоторые (но не все) функции C ++ 14 и несколько полезных функций). из C ++ 17 функций).

Однако стандартные заголовки библиотеки часто содержат разделы, которые зависят от макросов, обозначающих стандартную версию C ++ (например, #if __cplusplus >= 201103 - это обычная проверка для «C ++ 11 или новее»). Чтобы определить значение этих макросов, Eclipse вызывает компилятор, указанный в цепочке инструментов проекта, для обнаружения встроенных макросов. Обнаруженная ценность, например, макрос __cplusplus будет зависеть от того, в каком стандартном режиме запускается компилятор для этого вызова.

Флаги для этого вызова компилятора указаны в свойствах проекта, как вы упомянули. Если вы не предоставите флаг там, компилятор будет использовать любой режим по умолчанию. Я считаю, что GCC использует -std=c++14 в качестве значения по умолчанию с GCC 6 и далее. (Хотя я не совсем знаю, что такое «GCC Cross Compiler 8.6.0». Согласно веб-сайту GCC , последняя версия - 8.1.)

...