Предупреждение при компиляции библиотек с файлами C и C ++

Я работаю над проектом, который содержит как файлы 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?

1

Решение

Я считаю, что у вас возникла эта проблема, потому что вы включили -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++ варианты у вас есть
выбран.

2

Другие решения

Попробуйте прочитать это:

Использование глобальных переменных компилятора

Он описывает различные переменные компилятора и параметры сборки. Скорее всего, вам нужно будет либо внести изменения, либо выяснить, какие переменные используются специально для каждой компилируемой цели C и C ++.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector