Вот предупреждение, которое я и многие другие люди в сети видим, когда запускаю gcc на C ++ коде:
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++
Текст предупреждения очень ясен: «C ++» отсутствует в наборе [Ada / C / ObjC], поэтому у меня нет никаких сомнений относительно того, почему gcc выдает это предупреждение при компиляции кода C ++. (К вашему сведению, причина, по которой мы включили этот флаг, несмотря на наличие кода C ++, заключается в том, что в основном это код C, мы выбрали строгий (высокий уровень) список параметров предупреждений, но мы добавили немного кода C ++.
Мой вопрос: почему это предупреждение не подходит для C ++?
Документация gcc для опции предупреждения от http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Warning-Options.html,:
-Wstrict-prototypes (только C и Objective-C) Предупредить, если функция объявлена или определена без указания типов аргументов. (An
определение функции старого стиля разрешается без предупреждения, если
предшествует объявление, которое определяет типы аргументов.)
Теперь я просто знаю Я забыл кое-что очевидное о C ++, но разве C ++ также не требует указания типов аргументов для функций в прототипе? Правда ли, что эти прототипы функций часто находятся в объявлениях классов, потому что функции часто являются функциями-членами, но, тем не менее, не нужны ли прототипы? Или даже если это просто хорошая практика, то почему бы gcc не предложить поддержку с помощью этой опции? Или, если нет, по параллельной опции для C ++?