栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

有关头文件的一些学习记录

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有关头文件的一些学习记录

        一:为什么头文件总是用 #ifndef

        #ifndef #define #endif 的格式是为了防止头文件被重复引用,重复声明影响编译时间。


        二:为什么头文件中没有源函数

        我曾经以为头文件中会有函数的具体实现过程,但实际并没有,取而代之的是一些声明。于是当我也试着写头文件时,我才在想我该怎么做才能让这些在头文件中没有具体代码实现过程的函数能被有效且有目的地调用呢?

        带着这个目的我去搜索,突然了解到编译过程中有链接这一过程,所以好像不需要特意地去写明白头文件中所声明的函数原型写在哪个源文件中,链接过程中自动就能找到。


        三:头文件中不要定义函数

        也就是说某个名字的函数定义只需出现一次,这一次就是在源文件中。以后要用它时只要找到任意包含声明它的头文件,并 #include 这个头文件即可使用了。

        原因是编译器在编译时候的某一个编译单元是.o,重复定义会导致链接过程中.o文件重复任何变量或者函数只能有一个定义,否则在链接时候,链接器不知道要使用哪个.o文件中的定义。所以链接器讲产生重复定义的链接错误。

[ 不知道有没有人和我想的一样:既然说 #ifndef 可以防止重复声明,那可不可以防止重复定义呢。然后我试了一下,结果还是会报错:multiple definition of 'f' 即对函数f多次定义了。所以,头文件中不要定义函数就对了!]


附上两篇参考文章

浅谈头文件(.h)和源文件(.cpp)的区别 - scyq - 博客园 (cnblogs.com)

(转)头文件中不要去定义函数 - SAITAMA - 博客园 (cnblogs.com)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号