您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何通過(guò)使用 gcc編譯選項(xiàng)快速定位頭文件路徑解決編譯中的問(wèn)題,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
C / C++ 當(dāng)項(xiàng)目過(guò)于龐大的時(shí)候經(jīng)常會(huì)出現(xiàn)有些頭文件有多份拷貝。 如下圖所示: |
有可能會(huì)出現(xiàn) 多份相同的頭文件里面代碼卻不一致的情況。
如果恰巧引用了這樣的頭文件,可能會(huì)導(dǎo)致編譯錯(cuò)誤,
比如:
A 目錄下的 xx.h 有一個(gè)變量 h;
B 目錄下的 xx.h 沒(méi)有變量 h;
我們編譯路徑中可能引用的是 B 目錄下面的 xx.h 就有可能 導(dǎo)致 訪問(wèn)不存在的變量 h 而導(dǎo)致編譯問(wèn)題。
那么怎么快速定位到我們引用的頭文件的路徑呢?
gcc 有相關(guān)編譯選項(xiàng) -MMD 或者 -MD
`-MD'
`-MD' is equivalent to `-M -MF FILE', except that `-E' is not
implied. The driver determines FILE based on whether an `-o'
option is given. If it is, the driver uses its argument but with
a suffix of `.d', otherwise it take the basename of the input file
and applies a `.d' suffix.
If `-MD' is used in conjunction with `-E', any `-o' switch is
understood to specify the dependency output file (but *note -MF:
dashMF.), but if used without `-E', each `-o' is understood to
specify a target object file.
Since `-E' is not implied, `-MD' can be used to generate a
dependency output file as a side-effect of the compilation process.
`-MMD'
Like `-MD' except mention only user header files, not system
header files.
一般加在 我們 Makefile 文件的 gcc 的 FLAGS 里面,根據(jù)不同的變量自行修改便可.
在 執(zhí)行 make 進(jìn)行編譯,會(huì)得到一個(gè) xx.cpp => xx.d 的文件
用編輯器打開(kāi)便可以看到完整的頭文件路徑:
從圖中可以清晰的看到所使用的頭文件的路徑
是用的 application/share/webapp_frame/include/webapp_headinfo.h
而不是 server/share/webapp_frame/include/webapp_headinfo.h 文件
這樣可以便于快速定位和修復(fù)一些編譯上面的問(wèn)題。
上述內(nèi)容就是如何通過(guò)使用 gcc編譯選項(xiàng)快速定位頭文件路徑解決編譯中的問(wèn)題,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。