C 语言 函数声明 这句话,是不是错了 ?

红色下划线这句话, 是不是错了 ? 应该再加个条件 “ 被调函数的定义在主调函数之前 ” 才行 , 才不用声明 被调函数 吧 ??

阅读 1.8k
1 个回答

C89 会对没有声明的函数自动添加一个隐式声明:extern int foo();。这时,如果被调函数与这个声明兼容,那么就不用提前声明。(因为同样的原因,很多库函数的调用也可以不用 #include 相应的头就直接使用)

C99 已经已经不会进行这个隐式声明了。所以,如果被调函数定义在主调函数之后,是需要提前声明的。但是为了兼容性,很多编译器还是会默认支持隐式声明,但是通常会给一个 warning 。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进