為什麼void main 是錯誤的

2021-04-07 00:27:11 字數 779 閱讀 2854

原文

為什麼void main()是錯誤的

main()函式通常是乙個c/c++程式的入口點。

一次為了讓執行時系統(runtime system)能夠正確地呼叫它,它必須遵守一些約定。

現代的c++用如下約定:

int main() 或者

int main(int argc, char *argv) 再者

int main(int argc, char **argv)

(實際上,最後兩種形式是沒有本質區別的)

可以看出,main() 通常有乙個int型的返回值,並且,沒有或者代有argc , argv兩個引數。

void main()已經作廢很久了並且不應該再繼續在現今的**中使用了(雖然現在還用編譯器

因為向前相容而還在對其保持支援)。

因為你通常並不需要main()函式的返回值。

對於main()就有了下面這個例外:

如果乙個mian()沒以return ;

的形式結束,編譯器將自動的加上 return 0 ;

因此:

int main(){}

是很好的有效的c++**,但是

int f(){}

不是,因為它缺少返回值(雖然並不是絕對的禁止這個樣做,但缺少返回值通常是原始檔的錯誤

和不好的習慣。大多數的編譯器都回對其發出警告。)

ps :第一次翻譯東西,有錯誤的地方大家包涵。

TCP為什麼是面向連線的,為什麼是面向資料流的

tcp的核心是它要提供乙個可靠的傳輸協議。第乙個問題 tcp如果想要提供乙個可靠的傳輸協議,一定需要每次都建立連線嗎?三 次招手的意義在於讓通訊兩端確定,資訊剛才是可以從任意一端傳到另 一端的。如果傳送資料前我們沒有三次招手。那麼,由於tcp是乙個可靠 的傳輸協議,所以一定會提供超時重試的機制,而且...

為什麼是 pgsql ?

postgresql在國外很流行 在日本是僅次於apache的開源軟體 pgsql 使用程序 postgresql資料庫是多程序的架構.每乙個客戶連線都有乙個服務程序為其進行服務,也有共享記憶體,這一點是與orancle資料庫是相似的.postgresql使用一種客戶端 伺服器的模式.乙個伺服器程序...

為什麼是XML

乙個人倒是可以隨便很多,大概是票價 的原因,今天的參加者不多,也沒遇見熟人。一天下來,思維不斷的轉換,人也有點迷迷糊糊了。最後一場,居然趕錯了會場,開講才知道是db2的講座,主講王先生是 ibm 的 fellow,以前聽過幾次他的演講,沒什麼深刻印象,今天他講 db2 和 xml。這幾年來,偶和 x...