我知道
f(void) { return 0; }
的返回类型是int
,即使没有明确指定,但以下情况呢:(*f())[]{}
(*g())(){}
const*h(){}
使用-ansi -Werror -pedantic
选项在gcc上编译没有错误,仅在clang中会提示缺少返回语句:https://godbolt.org/z/jAYL4v
f
的返回类型似乎是int(*)[]
,g
的返回类型似乎是int(*)()
,而h
的返回类型似乎是const int*
。
在ANSI C标准中,我似乎找不到这个规则。我查看了[6.5.4.3函数声明(包括原型)]和[6.7.1函数定义],但甚至没有找到隐式的int返回类型(除了一些示例代码)。我是在看错地方吗?这个代码是有效的吗?