стандарт (последняя версия: WG14/N1256) говорит (6.2.1 § 2):C Стандарт. Является ли определение функции прототипом функции?
Функция прототипа является объявлением функции, которая объявляет типы параметров.
В окрестностях этого заявления, мы также находим доказательство того, что декларация идентификатора состоять из описателя или спецификатора типа (§ 4):
Каждого другой идентифицируют эр имеет область видимости определяется путем размещения его объявление (в объявлении или спецификаторе типа).
Так что, похоже, что знание того, является ли определение функции прототипом функции, сводится к пониманию того, является ли определение функции декларатором. Это ?
Мне нужен проверенный ответ, соответствующий стандарту C. Меня не волнует обычный смысл, или то, что говорит Википедия или ваша любимая книга C.
Вот заявление в стандарте, который привел меня к мысли, что определения функции могут быть действительно прототипы функций (§ 4):
Если описатель или спецификатор типа, который объявляет идентификатор появляется в списке декларации параметров в прототипе функции (не входит в функции де определению), ...
Обратите внимание, что «объявляет типы своих параметров» означает отличать прототипы функций от K & R-функций старого стиля, которые этого не делали, например. 'int foo (x, y)' vs. 'int foo (int x, int y)'. –