Я знаю, что f(void) { return 0; }
имеет тип возвращаемого значения int
, хотя он не указан, но как насчет следующего:
(*f())[]{}
(*g())(){}
const*h(){}
Это скомпилировано без ошибок на gcc с -ansi -Werror -pedantic
и жаловался только на отсутствующий оператор возврата в clang: https://godbolt.org/z/jAYL4v
f
, кажется, имеет тип возврата int(*)[]
, g
, кажется, имеет тип возврата int(*)()
,и h
, кажется, имеет тип возврата const int*
.
В стандарте ANSI C, я не могу найти правило для этого.Я проверил [6.5.4.3 объявления функций (включая прототипы)] и [6.7.1 определения функций], но даже не смог найти ничего по неявному типу возвращаемого значения int (за исключением некоторого примера кода).Я просто смотрю не в том месте?Это действительный код?