Я работаю над проектом, который содержит как файлы C ++, так и файлы C. В Code :: Blocks я выбрал следующий флажок -std=c++11
в вариантах сборки проекта.
Тогда получите следующее предупреждение.
||warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default]|
Если я также поставлю галочку -std=c99
,
Я получу дополнительное предупреждение как следующее.
||warning: command line option ‘-std=c99’ is valid for C/ObjC but not for C++ [enabled by default]|
Есть ли способ обойти это? Могу ли я установить -std=c++11
флаг только для C++
файлы и -std=c99
для файлов C?
Я считаю, что у вас возникла эта проблема, потому что вы включили -std=c++11
вариант в Глобальные настройки компилятора для GCC. Я знаю, что вы говорите, что включили его
в «опциях сборки проекта», но включение его в глобальных опциях компилятора вызывает
это поведение.
Это ошибка в C :: B, что эта глобальная опция описывается как:
Пусть g ++ соответствует стандарту языка C ++ 11 ISO C ++
когда на самом деле это будет применяться к обоим g++
а также gcc
,
Однако вам, вероятно, не рекомендуется устанавливать стандартную опцию языка C ++.
в Глобальный параметры компилятора, даже если он будет применяться только к g++
, Тот
Кстати, вы никогда не сможете создавать проекты C ++, которые соответствуют
более ранний стандарт, чем C ++ 11, но не C ++ 11.
Вы должны вернуться к Глобальные настройки компилятора, щелчок Сбросить настройки по умолчанию а также
ОК Затем установите -std=c++11
опция компилятора (и любая другая не по умолчанию
варианты, которые вы хотите) на проект уровень:
Щелкните правой кнопкой мыши свой проект в древовидном представлении рабочей области и откройте Варианты сборки.
Убедитесь, что Выбранный компилятор является Компилятор GNU GCC и выберите
Настройки компилятора -> Флаги компилятора Вкладка. Там вы увидите
тот же список флажков для параметров компилятора, который вы видели в Глобальные настройки компилятора.
Включить -std=c++11
Вариант и ОК.
Теперь любой .c
файлы в вашем проекте будут автоматически скомпилированы с gcc
,
без всяких g++
флаги, и .cpp
файлы будут автоматически
составлено с g++
, с -std=c++11
и любой другой g++
варианты у вас есть
выбран.
Попробуйте прочитать это:
Использование глобальных переменных компилятора
Он описывает различные переменные компилятора и параметры сборки. Скорее всего, вам нужно будет либо внести изменения, либо выяснить, какие переменные используются специально для каждой компилируемой цели C и C ++.