【发布时间】:2021-05-17 17:02:29
【问题描述】:
我知道要使用一个函数,你必须要么在主函数之上定义它,要么至少先声明它。但是我注意到如果我的函数具有 int 或 void 返回类型
,C 不会抛出错误消息#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Answer: %d", cube(3));
return 0;
}
int cube(int num)
{
return num * num * num;
}
我还是 C 的新手,你能解释一下为什么该规则不会影响 int 返回类型
【问题讨论】:
-
这是由于向后兼容旧的 C 标准。
-
我认为 gcc 甚至可能不会警告您
main之后的第一个函数,但尝试添加多个函数而不声明它会出错。 -
C99 之前的所有“未知”函数(即先前未声明的函数)都被自动假定为返回“int”。 gcc v5+ 将默认为 C99,但较小的版本将默认为已失效的 C90 标准。
-
节省时间,使用现代编译器并启用所有警告以获得类似“警告:函数‘立方体’的隐式声明 [-Wimplicit-function-declaration]”的结果
-
感谢大家的解释,是的,它确实警告我有关构建日志中的隐式函数声明。我只是不知道为什么其他返回类型显示明显错误而 int 没有,但现在我知道为什么了。
标签: c function return prototype return-type