易語言怎么導出成.exe的應用程序?
用易語言寫完,有三種編譯模式生成
c語言,各位大佬問一下,有沒有什么辦法使得include函數找不到對應文件名的時候,輸出null呢?
我會附上一個實現這個功能的方法,但是我想說這是沒有意義的。即使你可以通過某種手段編譯成功,甚至達到輸出NULL的目的,你的程序也很可能無法運行或者運行出錯。
C語言作為靜態編譯語言,在編譯階段或者預編譯階段發現錯誤比在運行時發現錯誤更有意義,所以現在的編譯器會越來越智能,幫你檢查出程序的潛在問題,提示你修改,包括找不到include指定的文件。這一切只有一個目的,那就是及早發現問題,讓運行時程序更加健壯高效。
那么如何強行實現這個功能呢?最直接的方法當然是修改編譯器,這對于大多數商業編譯器來說是不可行的,因為你不t沒有源代碼,但是像gcc這樣的開源軟件還是可以嘗試的,只是難度比較大。能改變的人絕不會做這種無意義的事。
我想說的另一個簡單的方法是寫一個檢測工具。功能很簡單,就是分析每個include指令,然后檢查文件是否存在。對于不存在的問題,用輸出null的語句替換指令,例如:
#include";file1.h
"http://存在
#include";file2.h
"http://不存在。
//文件內存
運行檢測工具后:
#包含"文件1.h"http://存在。
打印(文件%s的第%d行為空
c語言需要編譯才能運行。唐你沒發現編譯錯誤嗎?一定要看null嗎?
不怕麻煩,很多ide可以直接提示你可以找不到,就看一看。另外,編譯時出現了錯誤。
#include是一個編譯器指令,它將在系統頭文件目錄和指定的目錄中查找頭文件。如果可以不被發現,它不會不能通過編譯。雖然你可以嘗試修改gcc源代碼,實現文件找不到,輸出為空。但這并不意味著。;沒有意義,因為你可以找不到頭文件,你可以不要使用頭文件中聲明的變量、函數和宏定義。如果這樣做,將會報告一個錯誤,并且無法編譯。如果你能如果找不到頭文件,您應該盡快查看您的make。文件或IDE工具指定的頭文件目錄是否包含頭文件。然后尋找這個頭文件。
除了修改編譯器,還可以自己封裝一層,自己判斷文件的存在,再調用gcc編譯。
#如果