函数声明,有什么作用?

Primer__ 2014-09-29 07:13:59
《C++Primer》第四版
7.4函数声明
特别地,如果函数定义和函数声明的形参列表一致,但返回类型不一致,编译器会发出警告或出错信息来指出这种差异。

-------
问题:
1.
上面这句话的意思是:
程序文件中,有函数声明。可以检查函数定义,或调用时。参数,及返回值,是否与声明相同。
对么?

2.

//a.h
vode T();



//m.cc
#include "a.h"
int main()
{
T();
}



//a.cc
#include "a.h"
#include <iostream>
using std::cout;
vode T()
{
cout<<"AA";
}


编译:
g++ m.cc a.cc a.h

上面三个程序文件,定义文件(a.cc),和调用文件(m.cc)。它们都有函数声明。函数声明,是包含在头文件中。

函数声明的作用:
检查函数定义,函数调用时,参数,返回值,是否与声明相同。
假如,调用函数是:
T(3);
编译时,会提示错误。

3.

//m.cc
voie T(); //没用头文件,直接写函数声明。
int main
{
T();
}



#include <iostream>
using std::cout;

void T(); //没用头文件,直接写函数声明。
void T()
{
cout<<"AA";
}



编译:
g++ m.cc a.cc

这样也可以,对么?
...全文
457 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Primer__ 2014-09-30
  • 打赏
  • 举报
回复
《C++Primer》第四版 7.4函数原型为定义函数的程序员和使用函数的程序员之间提供了接口。 ------- 上面这句话意思: 函数声明,还有个作用。可以把整个程序分两大部分: 1.核心部分:编写函数声明,函数定义。 2.非核心部分:调用函数。 对么?
Primer__ 2014-09-29
  • 打赏
  • 举报
回复
jerry_dqh: 楼上: g++ m.cc a.cc a.h 先编译:m.cc,再编译:a.cc,最后编译:a.h 编译完了,再链接。 是不是,这样啊?
碼上道 2014-09-29
  • 打赏
  • 举报
回复
声明主要还是由于c++编译的机制导致的,各个.c .cpp编译单元单独编译,最后链接,所以要先声明一下
百曉生 2014-09-29
  • 打赏
  • 举报
回复
首先,楼主需要明白函数声明是为什么?其次要知道为什么要把程序分成头文件和源文件(毕竟都放在源文件中也是可以的) 可以参考一下——http://baike.baidu.com/view/10679648.htm?fr=aladdin
Primer__ 2014-09-29
  • 打赏
  • 举报
回复
4. 如果,函数定义,函数调用,在同一文件。 那么,函数声明,可以省略。 如果,函数定义,函数调用,分开在两个,或以上文件。 那么,每个文件必须有函数声明。 对么?

64,639

社区成员

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

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