C++的函数一定要声明才可以调用吗?

wtjd 2009-08-28 11:33:49
下面的代码:
#include "iostream.h"

void sayHello(){
cout<<"hello"<<endl;
}
void main(){

sayHello();
}


我没有声明sayHello,不一样调用成功了?

怎么书上说函数要先声明,后调用啊?
...全文
1134 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
niimp2 2009-08-28
  • 打赏
  • 举报
回复
1.要了結聲明和定義的概念
2.多看看書
3.樓上已經給出答案
Sou2012 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coverallwangp 的回复:]
如果你把sayHello定义在main函数的后面就要先声明了

你这样放到前面实际上是把声明和定义合二为一了
[/Quote]

UP!!
kakashi0309 2009-08-28
  • 打赏
  • 举报
回复
执行顺序 你把main函数放前面 就会发现
rejoice914 2009-08-28
  • 打赏
  • 举报
回复
你放main函数后面试试!
liao05050075 2009-08-28
  • 打赏
  • 举报
回复
你试试这个。如果不在main里加上void sayHellow();是不行的
#include "iostream.h"
void main(){

sayHello();
}
void sayHello(){
cout < <"hello" < <endl;
}
coverallwangp 2009-08-28
  • 打赏
  • 举报
回复
如果你把sayHello定义在main函数的后面就要先声明了

你这样放到前面实际上是把声明和定义合二为一了
wtjd 2009-08-28
  • 打赏
  • 举报
回复 1
懂啦

原来声明和实现可以合二为一,
结帖,给分,
sunyu359292212 2009-08-28
  • 打赏
  • 举报
回复
那是因为你的sayhello()在main()的前面!
「已注销」 2009-08-28
  • 打赏
  • 举报
回复 1
声明在编译期确定
定义在运行期确定
camelisi 2009-08-28
  • 打赏
  • 举报
回复
函数声明是没有给出实现的的如 void sayHello();
而void sayHello()
{
...//函数体
}
这种是实现;可以将声明和实现放一起
若在main函数前没有声明,而把函数体放在main函数后编译器会报错。
原因参考7楼
Beyond_cn 2009-08-28
  • 打赏
  • 举报
回复
呵呵。。。
bfzhao 2009-08-28
  • 打赏
  • 举报
回复 1
根本问题是理解为什么需要声明。C/C++是强类型的语言,如果不声明就使用,在一个编译单元中,编译器没有办法判断使用是否合法(如参数个数,参数类型匹配等等),这样强类型就难以实现。

这也是为什么函数声明一般只需要参数类型,而参数名(形参,parameter)是不需要的。

65,179

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧