include <> 和 include “”
c++ 中引入頭文件有兩種方式include <> 和 include “”
通常系統(tǒng)自帶或者c++自帶的頭文件使用include <> 而自己定義的頭文件使用include “”引入
include <>
使用include <>引入的頭文件换衬,在g++編譯(在沒有使用-I的情況下)的時候只會在系統(tǒng)定義過的文件夾中搜索痰驱,就算該頭文件放在當(dāng)前目錄下也會提示未找到。
如果我們自定義的頭文件瞳浦,使用include <>引入担映,那么需要
- 在指定
*.h
和*.cpp
文件的時候需要同時指定所在目錄
如果不指定,那么會直接報錯叫潦,提示
g++: error: B.h: No such file or directory
g++: error: B.cpp: No such file or directory
(引入的*.h
在g++中可以不用些蝇完,但是他的實現(xiàn)*.cpp
要寫,不是說可以自己尋找的嗎矗蕊?)
- 同時還要指定要搜索的頭文件的文件夾
使用-I
參數(shù)短蜕,該參數(shù)后面直接接路徑,不加空格傻咖。如果是多個朋魔,那么就加多個-I
。(不知道是不是和一些在一起卿操,沒找到資料)
//例警检,同時在當(dāng)前文件夾和該文件夾下的B文件夾里
g++ -o main A.h B/B.h -I./ -IB
include ""
使用include <>引入的頭文件,會搜索當(dāng)前文件夾害淤。
總結(jié)
所以扇雕,當(dāng)使用include <>引用自己定義的頭文件的時候,執(zhí)行g++ -M file.c
,那么會報錯窥摄,找不到定義的那個文件镶奉。
而執(zhí)行g++ -M file.c -I -I
,也就是把頭文件所在的路徑加進(jìn)來,那么會輸出所有的頭文件腮鞍,包含系統(tǒng)自帶的值骇。
而g++ -MM file.c
只是輸出用戶定義的,那么將只輸出自己本身
輸出為file.o:file.c