【发布时间】:2016-06-30 13:16:36
【问题描述】:
在 C 中,如果一个函数定义为 0 个参数(空参数列表),则调用任意数量的参数,gcc 不会给出任何错误。为什么会这样?
【问题讨论】:
-
编译时启用所有警告(-Wall)。
-
请出示MCVE。
-
因为这就是语言的设计方式。你是在问为什么语言是这样设计的?
-
用
-Wall编译你会得到:error: void value not ignored as it should be -
C 规范说,声明的函数没有任何参数(甚至没有
void参数)采用未指定数量的参数。如果你想明确地说一个函数不带参数,你需要指定一个没有名称的void参数类型。
标签: c function function-declaration function-definition