成功添加自定义头文件(head)却报错找不到 -- 问题与解决

1.问题缘起

小白博主头一次开始写一个目测要上千行的代码project,为了简洁,开始接触头文件的编写。
而头文件可以用一行来代替众多的宏定义,常量、函数等等的全局声明,自然是简洁风的不二之选啦!

但当我添加到第二个我自定义的头文件时,编译器开始报错如下:
implicit declaration of function…[-Wimplicit-function-declaration]

这让我百思不得其解,因为第一个头文件已经添加成功,第二个怎么就有问题了呢?

2.解决

我在stackoverflow上最终找到了一个汇总的帖子,如下:
https://stackoverflow.com/questions/44025479/implicit-declaration-of-functions-regardless-of-header-include-and-ifndef
(如果你不想看英文的话,可以接着往下看呵)

我犯的错误(也可能是许多和我一样的初学者犯的错误),就是:
了解到为了防止重复定义,所以在头文件中机智的加了
#ifndef
#define

#endif
这个结构,以为就未雨绸缪了

但是!!!如果你在#ifndef 和#define 后面什么都不加,或者在所有自定义头文件中都加相同的“标识符”的话,那么除了第一个文件会添加成功,之后的头文件都会被编译器默认是重复定义!!!所以会提示报错找不到

因为这个“标识符”就相当于一个特别的标记,标记后面的内容是否已经被定义过

3.正确的做法

正确的做法就是,在不同的头文件中添加不同的“标识符”,这样才会使上面提到的那个结构发挥作用

关于这个“标识符”的常见命名规则和上述结构更具体的介绍,请见另一位博主的帖子:
https://blog.csdn.net/DLUTBruceZhang/article/details/8723342

4.后记

实践中另外还发现,上述这种结构只是保证在同一个.c源文件中不被重复定义,但当同一个这样的头文件在不同的源文件中引用时,并不会被报错

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值