在什麼情況下GCC可以在而不是嘗試調用構成函數時拋出「未定義的引用」鏈接錯誤消息?GCC可以不抱怨未定義的引用嗎?
例如,在此C代碼被編譯和鏈接的GCC的情況:
void function()
{
made_up_function_name();
return;
}
...即使made_up_function_name
不存在任何地方在代碼(不是頭,源文件,聲明或任何第三方庫)。
這樣的代碼可以在一定條件下被GCC接受和編譯,而不需要觸及實際的代碼?如果是這樣,哪個?
謝謝。
編輯:以前沒有任何聲明或提到made_up_function_name
存在於其他地方。意思是整個文件系統的一個grep -R
將只有顯示確切的單行代碼。
它可以(只要你編譯C,而不是C++)。你想完成什麼? – 2011-04-05 17:11:10
我不想完成任何事情,它已經發生了,我想知道爲什麼可能。如果我使用「-g」並用文本編輯器編輯文件,made_up_function_name實際上存在於最終的鏈接二進制文件中。 – STenyaK 2011-04-05 17:17:27
至於爲什麼,請參閱:http://stackoverflow.com/questions/4914589/c-prototype-functions/4914683,http://stackoverflow.com/questions/4800102/not-including-stdlib-h-does-not -produce-any-compiler-error/4800138#4800138,並且可能還有更多。 – 2011-04-05 17:20:20