免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2631 | 回复: 8
打印 上一主题 下一主题

[函数] 编译C中没有引用的函数问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-27 09:13 |只看该作者 |倒序浏览
在c程序中,include 了没有使用的头文件,如string.h,对程序有没有任何的不好,如多占用了内存等等?
自己写了很多函数,有几个函数没有使用,在编译后,这几个没有使用的函数对程序有没有不好?

没学过编译原理,对这几个看似简单的问题想不透,请教。

论坛徽章:
0
2 [报告]
发表于 2006-09-27 10:25 |只看该作者
没影响
即使你做 10M 个
#define ....
只要你不用, 都不会改变变异结果,只是编译时间多点。

论坛徽章:
0
3 [报告]
发表于 2006-09-28 16:51 |只看该作者
对程序所实现的功能虽没影响,的确会浪费存储空间,但不会很严重。因为,include 是静态连接,它会将被包含文件中的文本替换源代码文件中的#include 指令,大多数情况下,头文件内容只是编译器生产最终代码所需的信息,而并不是加到最终代码的具体语句。和汇编的伪指令类似。

而你自己的函数都会编译成机器码链接到最终代码中的。

论坛徽章:
0
4 [报告]
发表于 2006-09-28 17:04 |只看该作者
include是展开include进去的文件,会造成目标文件变大,没有必要的话就尽量的精简吧

论坛徽章:
0
5 [报告]
发表于 2006-09-28 21:02 |只看该作者
ok,明白了。谢谢各位

论坛徽章:
0
6 [报告]
发表于 2006-09-28 21:39 |只看该作者
原帖由 kingkaung 于 2006-9-27 09:13 发表
在c程序中,include 了没有使用的头文件,如string.h,对程序有没有任何的不好,如多占用了内存等等?
自己写了很多函数,有几个函数没有使用,在编译后,这几个没有使用的函数对程序有没有不好?

没学过编译 ...


NO!一般来说,包含了多余的头文件会浪费宝贵的词法分析时间。为了避免多次包含同一个头文件,很多程序都使用了宏来控制。你可以去读一下Linux内核源代码。;-p

论坛徽章:
0
7 [报告]
发表于 2006-09-29 00:56 |只看该作者
原帖由 converse 于 2006-9-28 17:04 发表
include是展开include进去的文件,会造成目标文件变大,没有必要的话就尽量的精简吧


标准的header文件你include多少都没有关系,因为其中只会有声明,而没有定义, 变量实体、函数实体都不会在其中,
除非你自己写个int i;在header文件中,目标文件才会变大。

论坛徽章:
0
8 [报告]
发表于 2006-09-29 09:11 |只看该作者
看来现在说明白还是有点早。
编译时间多一点这个缺点我想大家能接受,因为就是几万行的C代码也就是几秒钟就搞定了,差不了多少。
惟一就是怕没有使用的函数会多占代码段,引起内存占用较多就不合适了。

论坛徽章:
0
9 [报告]
发表于 2006-09-29 10:08 |只看该作者
原帖由 kingkaung 于 2006-9-29 09:11 发表
看来现在说明白还是有点早。
编译时间多一点这个缺点我想大家能接受,因为就是几万行的C代码也就是几秒钟就搞定了,差不了多少。
惟一就是怕没有使用的函数会多占代码段,引起内存占用较多就不合适了。


c是采用分开单独编译的方法,既然是分开编译,很多东西自然不在本地,
这就需要有个人告诉编译器,这些不在的东西是个什么样子,编译器便会根据东西的样子造好接口,这个人就是header,
而后就是linker的事了,它把编译器造出的接口连接起来(当然不只这些事情),形成最终的可执行文件。其实linker是与操作系统密切相关的,它不懂c,只会接管子。

所以说你应该知道header文件中应该写些什么吧,比如extern 变量或函数,数据类型的定义,宏定义,include其他header文件 ...

你的函数应该都是写在c文件中吧,呵呵,不要写在header文件中就没有问题了,
你害怕没用的函数占代码段,通常做法是
#ifdef USE_FUNC1
void func() {
...
}
#endif
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP