【小错误,大麻烦】头文件中的#ifndef

最近在工作过程中遇到了一个编译问题,提示功能函数没有声明,但是检查了多次,确认这些功能函数都声明过了。

我开始使用排除法,首先编译顺序,在Makefile中编译顺序没有问题,排除;

之后检查头文件中函数的声明,没问题,排除;

再来是头文件的包含,也没问题,排除;

接下来检查头文件顺序,也没问题,排除;

这时候我迷茫了,为什么呢?

在我一筹莫展的时候,我突然发现了一个怀疑点,有两个头文件的#ifndef是一样的!!!

然后一切都明朗了,原因找到了,就是因为在不同的头文件中使用了相同的#ifndef,并且声明函数的头文件在第二顺位引用导致的。

在头文件中#ifndef的作用就是防止重复引用的

这个错误是一个比较低级的错误,原因是公司有特定的编码规范,头文件有一定的格式,当时犯懒就复制了一份来写新的头文件,忘记了修改#ifndef,导致这么个错误。

这是个教训,同时也深化了对于#ifndef的重视,引以为戒,大家共勉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章