C ++ делает законным создание локальных объявлений функций, хотя я редко видел, чтобы эта функция использовалась.Часто это ошибка, но, например, если вы действительно использовали такое объявление и вызвали соответствующую функцию:
int main()
{
int foo();
return foo();
}
А затем удалили вызов функции:
int main()
{
int foo();
return 0;
}
Было бы глупо, если бы вдруг он больше не компилировался.
Итак, реальные случаи, когда это не указывает на ошибку на вашем конце, близки к несуществующим, но компиляторы должны учитыватьпроблемы воображаемого мира, потому что иногда реальный мир становится довольно нереальным.Отображение предупреждения кажется мне хорошим компромиссом: компилятор говорит вам, что он не уверен, действительно ли это то, что вы хотели.
Дело в том, что создатели компилятора не могут сделать это ошибкой, потому что это синтаксически допустимо.Если вы хотите рассматривать это как ошибку в своем коде, это, вероятно, не вызовет у вас никаких проблем.