【小錯誤,大麻煩】頭文件中的#ifndef

最近在工作過程中遇到了一個編譯問題,提示功能函數沒有聲明,但是檢查了多次,確認這些功能函數都聲明過了。

我開始使用排除法,首先編譯順序,在Makefile中編譯順序沒有問題,排除;

之後檢查頭文件中函數的聲明,沒問題,排除;

再來是頭文件的包含,也沒問題,排除;

接下來檢查頭文件順序,也沒問題,排除;

這時候我迷茫了,爲什麼呢?

在我一籌莫展的時候,我突然發現了一個懷疑點,有兩個頭文件的#ifndef是一樣的!!!

然後一切都明朗了,原因找到了,就是因爲在不同的頭文件中使用了相同的#ifndef,並且聲明函數的頭文件在第二順位引用導致的。

在頭文件中#ifndef的作用就是防止重複引用的

這個錯誤是一個比較低級的錯誤,原因是公司有特定的編碼規範,頭文件有一定的格式,當時犯懶就複製了一份來寫新的頭文件,忘記了修改#ifndef,導致這麼個錯誤。

這是個教訓,同時也深化了對於#ifndef的重視,引以爲戒,大家共勉。

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