为什么要存在头文件?

    头文件即.h文件,当我们编译代码时,只编译.c、.cpp文件(即源文件),头文件不会参与编译,所以可能有人就会问了,为什么还有存在头文件呢?

    要回答这个问题,我们先来讲一下具体的编译的流程。

    c++支持“分别编译”。也就是说,一个程序所有的内容可以分成不同的部分,分别写在不同的.cpp文件中。

    编译时,不需要与其他文件互通。对于一个文件中调用的函数(必须要先声明),如果找不到定义,那么编译器会生成一个“符号表”,将函数名放入其中,等到链接时,链接器会在其他文件中寻找这个符号的定义,并链接。

    这种机制给c++程序员带来好处,好处就是不用把所有代码都写进一个文件,变成一坨。但是也带来一个问题。一个函数还好,只需要一句声明,但是如果有很多个函数,那么就要写上如此冗长的声明语句,这根本不现实。

    一种解决方法是把这些声明语句写在单独的一个文件中,等到哪个文件需要调用这些函数时,再把这些语句复制到该文件中,但是很显然,这种方法太笨拙。

    所以头文件就诞生了!虽然叫头文件,其实也是源代码,只是不被编译。我们把那些声明语句放在头文件中,当某个文件需要他们时,就用#include宏包含这个头文件,当编译开始前,编译器会先把#include出现的地方自动替换为所包含文件的内容(即那些声明语句),这样就省却了我们手动复制代码的痛苦。

    所以头文件中的语句只能是声明语句,不可以定义。如果写了定义语句,当多个文件包含这个头文件时,就出现了重复定义,当然这是不允许的。

转载于:https://my.oschina.net/xunxun/blog/482882

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值