Когда вы компилируете файл с расширением .cpp
, он компилируется как код C ++ по умолчанию. В языке C ++ требование для объявления функций является обязательным, жестким требованием. Нет смысла делать параметр -Wmissing-prototypes
для C ++.
Другими словами, вы не можете «включить это предупреждение » в C ++, потому что «отсутствующий прототип» всегда является ошибкой в C ++.
P.S. В качестве примечания: Понятие prototype относится только к языку C. В C ++ нет «прототипов».
На языке C функция объявление может быть прототипом или не прототипом, поэтому для разграничения одного термина от другого необходим дополнительный термин. В C ++ объявления функций всегда являются «прототипами» (с точки зрения C), поэтому в C ++ этот дополнительный термин просто не нужен. В C ++ объявления функций - это просто объявления функций . Это просто говорит обо всем.
РЕДАКТИРОВАТЬ: После прочтения вашего комментария я пришел к выводу, что вы, должно быть, неправильно поняли значение и цель опции -Wmissing-prototypes
и соответствующее предупреждение. Обратите внимание, что эта опция не будет проверять, включили ли вы прототипы всех ваших функций в какой-либо заголовочный файл. В GCC нет возможности сделать это независимо от того, используете ли вы C или C ++.
Цель -Wmissing-prototypes
отличается. Эта опция работает только тогда, когда вы вызываете функцию, у которой нет видимого прототипа в точке вызова. На языке C это допустимо, но если вы хотите получить предупреждение в этом случае, вы используете опцию -Wmissing-prototypes
. В языке C ++ вызов функции, у которой нет видимого объявления («прототипа») в точке вызова, всегда является непосредственной ошибкой, поэтому компиляторам C ++ не нужна такая опция, как -Wmissing-prototypes
.
Другими словами, если вы определили некоторую функцию в каком-то файле реализации, но забыли включить прототип для этой функции в некоторый заголовочный файл, вы не получите никаких предупреждений от компилятора, пока не попытаетесь вызвать эта функция. Неважно, является ли ваш код C или C ++, используете ли вы -Wmissing-prototypes
или нет ... Пока вы не попытаетесь вызвать функцию, предупреждений не будет.
Но как только вы попытаетесь вызвать функцию без прототипа, компилятор C выдаст предупреждение (если вы использовали -Wmissing-prototypes
), а компилятор C ++ всегда сообщит об ошибке.