c語(yǔ)言include后面跟什么 c語(yǔ)言,各位大佬問(wèn)一下,有沒(méi)有什么辦法使得include函數(shù)找不到對(duì)應(yīng)文件名的時(shí)候,輸出null呢?
c語(yǔ)言,各位大佬問(wèn)一下,有沒(méi)有什么辦法使得include函數(shù)找不到對(duì)應(yīng)文件名的時(shí)候,輸出null呢?最后我會(huì)附上一個(gè)實(shí)現(xiàn)這個(gè)功能的方法,但我想說(shuō)的是,這樣做是沒(méi)有意義的。即使您可以通過(guò)某種方式成功編譯
c語(yǔ)言,各位大佬問(wèn)一下,有沒(méi)有什么辦法使得include函數(shù)找不到對(duì)應(yīng)文件名的時(shí)候,輸出null呢?
最后我會(huì)附上一個(gè)實(shí)現(xiàn)這個(gè)功能的方法,但我想說(shuō)的是,這樣做是沒(méi)有意義的。即使您可以通過(guò)某種方式成功編譯,甚至輸出null,您的程序也可能無(wú)法運(yùn)行,或者在運(yùn)行時(shí)會(huì)出現(xiàn)錯(cuò)誤。
作為一種靜態(tài)編譯語(yǔ)言,在編譯階段或預(yù)編譯階段查找錯(cuò)誤比在運(yùn)行時(shí)查找錯(cuò)誤更有意義,因此當(dāng)前編譯器將變得更加智能,幫助您檢查程序中的潛在問(wèn)題,提示您進(jìn)行修改,包括找不到include中指定的文件。所有這一切的唯一目的是提前發(fā)現(xiàn)問(wèn)題,它使運(yùn)行時(shí)程序更加健壯和高效。
那么如何強(qiáng)制實(shí)現(xiàn)這個(gè)功能呢?當(dāng)然,最直接的方法是修改編譯器,這對(duì)于大多數(shù)商業(yè)編譯器是不可行的,因?yàn)槟鷽](méi)有源代碼。然而,像GCC這樣的開(kāi)放源碼軟件仍然可以嘗試,但這更困難。能改變的人永遠(yuǎn)不會(huì)做這種毫無(wú)意義的事。
我想談的另一個(gè)簡(jiǎn)單方法是編寫(xiě)一個(gè)檢測(cè)工具。它的功能非常簡(jiǎn)單。它是分析每個(gè)include指令,然后檢查文件是否存在。對(duì)于不存在的問(wèn)題,請(qǐng)將指令替換為空輸出語(yǔ)句,例如:
file1。H
//存在
文件2。H
//不存在
//文件內(nèi)存
運(yùn)行檢測(cè)工具后:
#include“File1。H”//exists
打?。ā皀ull在文件%s的第%d行“uuuuuuuuuu文件,uuuuuuuuuuuuuuuuuuuuuuu行)
//文件內(nèi)容
然后在編譯之前運(yùn)行此工具。對(duì)于未使用的include文件,此方法將輸出null。對(duì)于文件中使用的include文件的內(nèi)容,如變量、宏或函數(shù),將提示編譯錯(cuò)誤。
下面是如何在vc2017中設(shè)置自定義工具,如下圖所示:
打開(kāi)項(xiàng)目屬性->自定義生成步驟->配置相關(guān)參數(shù)。