鱼C论坛

 找回密码
 立即注册
查看: 887|回复: 5

[已解决]把声明放头文件的好处?

[复制链接]
发表于 2023-7-17 12:01:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题:把声明(如函数原型的声明)放在头文件中,并在需要时用#include指令把它们包含于源文件中,这种做法有什么好处?

答案是声明只需要编写一次,这样以后维护和修改时更加容易,同样,声明只编写一次消除了在多份拷贝中出现写法不一致的机会。

我有点理解不了,不都是一样改文件吗?有没有大佬解释一下
最佳答案
2023-7-17 12:01:53
这个问题涉及到C/C++编程的头文件使用和设计的一些基本概念。将函数声明放在头文件中,主要有以下几个好处:

1. **代码复用**:假设你有一个函数,它在多个源文件中都需要使用。如果你不把这个函数的声明放在头文件中,你需要在每个使用这个函数的源文件中都声明一次。但如果你把函数声明放在一个头文件中,你只需要在使用该函数的源文件中包含这个头文件即可。这样,你可以避免重复的声明代码,使得代码更加简洁,更加易于维护。

2. **提高编译效率**:在编译时,头文件的内容只需要被编译一次,然后这个编译结果可以被多个源文件共享。如果你不使用头文件,而是在每个源文件中都进行声明,那么这些声明将会在每个源文件编译时都被重复编译,这就浪费了编译时间。

3. **保证一致性**:把函数声明放在一个头文件中,可以确保所有包含这个头文件的源文件都看到的是同一个函数声明。这样,如果你需要修改这个函数的声明(例如改变参数类型或者返回类型),你只需要修改头文件中的声明即可,所有使用这个函数的源文件都会自动得到更新。这可以消除在多份拷贝中出现写法不一致的机会。

因此,把声明放在头文件中并在需要时用#include指令把它们包含于源文件中,是一种非常好的编程实践。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-17 12:01:53 | 显示全部楼层    本楼为最佳答案   
这个问题涉及到C/C++编程的头文件使用和设计的一些基本概念。将函数声明放在头文件中,主要有以下几个好处:

1. **代码复用**:假设你有一个函数,它在多个源文件中都需要使用。如果你不把这个函数的声明放在头文件中,你需要在每个使用这个函数的源文件中都声明一次。但如果你把函数声明放在一个头文件中,你只需要在使用该函数的源文件中包含这个头文件即可。这样,你可以避免重复的声明代码,使得代码更加简洁,更加易于维护。

2. **提高编译效率**:在编译时,头文件的内容只需要被编译一次,然后这个编译结果可以被多个源文件共享。如果你不使用头文件,而是在每个源文件中都进行声明,那么这些声明将会在每个源文件编译时都被重复编译,这就浪费了编译时间。

3. **保证一致性**:把函数声明放在一个头文件中,可以确保所有包含这个头文件的源文件都看到的是同一个函数声明。这样,如果你需要修改这个函数的声明(例如改变参数类型或者返回类型),你只需要修改头文件中的声明即可,所有使用这个函数的源文件都会自动得到更新。这可以消除在多份拷贝中出现写法不一致的机会。

因此,把声明放在头文件中并在需要时用#include指令把它们包含于源文件中,是一种非常好的编程实践。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-17 12:06:44 | 显示全部楼层
isdkz 发表于 2023-7-17 12:01
这个问题涉及到C/C++编程的头文件使用和设计的一些基本概念。将函数声明放在头文件中,主要有以下几个好处 ...

《**》
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-17 12:07:15 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-17 13:28:31 | 显示全部楼层
不清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-19 18:06:58 | 显示全部楼层
来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 08:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表