Разрешает ли C ++ тип возвращаемых значений по умолчанию для функций? - PullRequest
6 голосов
/ 01 декабря 2008

В C действует следующий ужас:

myFunc()
{
  return 42;  // return type defaults to int.
}

Но как насчет C ++? Я не могу найти ссылку на это в любом случае ...

Мой компилятор (Codegear C ++ Builder 2007) в настоящее время принимает его без предупреждения, но у меня были комментарии, что это ошибка в C ++.

Ответы [ 5 ]

19 голосов
/ 01 декабря 2008

Это плохо сформировано в C ++. Это означает, что он не компилируется стандартным компилятором. Пункт 7.1.5 / 4 в Приложении C к Стандарту объясняет изменение «Запрещение неявного int».

9 голосов
/ 01 декабря 2008

Неявные возвращаемые типы допустимы в C89, но многие компиляторы предупреждают об этом.

Они недействительны ни в C ++, ни в C99.

5 голосов
/ 01 декабря 2008

Итак, это определенно «плохо сформированный» C ++, но, похоже, многие компиляторы в лучшем случае принимают его с предупреждением.

  • Codegear C ++ Builder 2007: нет ошибок или предупреждений вообще
  • G ++: требует -W -Wall для генерации предупреждения или -pedantic для генерации ошибки (Петр)
  • MSVC 8: выдает ошибку ( tfinniga )
  • другие ...

Пожалуйста, добавьте / исправьте этот список!

2 голосов
/ 01 декабря 2008

Это недопустимый C ++, но некоторые компиляторы примут его либо без вывода сообщений, либо с диагностикой.

1 голос
/ 02 декабря 2008

Как опубликовано, это плохо сформировано. MSVC 8 выдает следующую ошибку:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...