明人不說暗話,直接上**:
這裡有兩個路徑下的同名head.h標頭檔案。
includea/head.h
#define a 100
int funa()
includeb/head.h
#define a 200
int funa()
main.cpp
#include#include "head.h"
using namespace std;
int main(){
std::cout<
flags = -std=c++11
incpath = -i./includea
incpath += -i./includeb
all: main
main:main.cpp
g++ $(cflags) $(incpath) -o main main.cpp
clean:
rm -rf main *.o *.d
執行結果:
即引用的是includea/head.h的標頭檔案
結論:編譯時按順序搜尋引用的標頭檔案。
c 中兩個標頭檔案定義同名類的解決辦法
今天考慮了乙個問題,如果兩個標頭檔案比如time.h times.h裡面都定義了乙個time的類,要怎麼解決?vs編譯器只對cpp檔案進行編譯,在編譯階段,這兩個標頭檔案的實現檔案都不會出錯,如果不在主函式中用到time這個類,程式也不會有問題。但是如果用到,那就是disaster!如果你不得不在兩...
c 中兩個標頭檔案定義同名類的解決辦法
今天考慮了乙個問題,如果兩個標頭檔案比如time.h times.h裡面都定義了乙個time的類,要怎麼解決?vs編譯器只對cpp檔案進行編譯,在編譯階段,這兩個標頭檔案的實現檔案都不會出錯,如果不在主函式中用到time這個類,程式也不會有問題。但是如果用到,那就是disaster!如果你不得不在兩...
C 中,兩個標頭檔案互相引用怎麼辦
兩個標頭檔案相互包含會導致超前引用的問題,所謂超前引用是指乙個型別在定義之前就被用來定義變數和宣告函式。發生這種情況是無法編譯通過的,不過可以採取一些手段解決該問題 超前引用導致的錯誤有以下幾種處理辦法 1 使用類宣告 在超前引用乙個類之前,首先用乙個特殊的語句說明該識別符號是乙個類名,即將被超前引...