不知道大家有沒有遇到過這種情況,同一個工程中有兩個頭文件分別在不同的路徑,這兩個路徑同時也添加到了你的工程里面,那在某個c文件里面#include “xxx.h”后,系統會添加哪個頭文件?還是兩個都添加?博主測試結果為:添加排序在前的頭文件。
比如在下面的工程中,同時包含了兩個rng.h和rng.c文件(一個是CUBEMX自動生成的,另一個是博主找的第三方庫,正點原子提供的)。
這時,如果你在某個c文件中#include “rng.h”,系統只會將先添加路徑中的rng.h包含進去,即下圖中排序在前的路徑。
有兩種方法可解決上面的問題。
方法1:添加頭文件的時候指定詳細路徑。如下面代碼所示:
#include "tim.h" #include "usart.h" #include "sys.h" #include "lcd.h" #include "string.h" #include "..\Hardware\rng.h" #include "..\Hardware\rtc.h"
有些頭文件可直接引用,因為在該工程中他們是唯一的,但是有些可以細化路徑引用目標頭文件。
方法2:修改頭文件名稱
這個方法就不多說了,直接上圖吧,應該一看就明白了。只是有一點要注意,修改后,原先調用的路徑也要跟着修改。
可以在你選用的第三方庫的頭文件源文件前加一個前綴之類的,這樣就可以規避頭文件重名的問題了。雖然上圖中Hardware中和Application/User文件下本來就沒有重名的文件。