㈠ 急~~~~C語言問題:為什麼把函數寫在主函數後面,但沒在主函數內聲明,卻沒有報錯
這里涉及到一個路徑的問題。我們編寫好的程序main函數是入口,當編譯器變異的時候會根據裡面調用到的其他函數去尋找載入進來一起編譯(非main函數如果不被main函數調用其實根本上就沒用,這里指的是不被main函數調用和main函數調用過的函數調用),假如是include進來的編譯器就知道去庫函數裡面載入那一個函數,而沒有include進來的就會在本目錄下檢索,假如檢索不到就編譯出錯。庫函數所在就相當於老地方,而main函數所在的地方就相當於本地,這兩個都是被編譯器熟知的。
其實除了c語言,java也會這樣,不在同一個包內的類需要導入,在同一個包裡面的類不需要導入(import),在同一個java文件裡面的類(內部類或者類外面定義的類都一樣)也不需要導入。因為編譯器知道在這兩個地方找,去類庫找就需要指定哪一個。
㈡ linux編譯c語言,一個被調用的函數只聲明了,沒有定義,不報錯,是怎麼回事
你聲明了,只要不調用那個函數就不會報錯,如果你程序中調用了那個只聲明未定義的函數的話,你編譯的時候就會報錯
㈢ C語言程序,編譯沒有錯誤,執行時出錯。問題在哪
#include<stdio.h>
intmax(inta,intb);
intmain(void)
{
inta,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("maxis%d ",c);
return0;
}
intmax(inta,intb)
{
returna>b?a:b;
}
max函數未定義
㈣ C++中,以下代碼有錯誤為何編譯器不會報錯呀
大哥,操作符不是定義的悔虛,而是要重載。
看臘前銀了這句應該理解為何了吧?
也就是說,你的類如果不重載操作符,那麼將調用系統自定義的操作符。
所以編譯器不會報錯,也沒有錯誤。
除非你要重載操輪宴作符,來完成你特定的操作。