簡體   English   中英

C ++ void返回類型為main()

[英]C++ void return type of main()

一些C ++編譯器允許main函數返回類型為void 但是,操作系統是否需要返回int類型值來指定程序是否正常結束?

C ++ 不允許 mainvoid返回類型。 已發布的C ++標准要求它為int 一些C ++編譯器允許您使用void ,但不建議這樣做。 通常,操作系統不關心這種或那種方式。 特定操作系統可能需要程序提供返回值,但它不一定必須來自main的返回值。 如果C ++編譯器允許void ,那么它可能提供了一些指定程序退出代碼的方法。

C ++允許main函數返回類型為void

不,它沒有。

C ++標准只需要2種不同類型的主要簽名。 如果返回類型為int則可以選擇添加其他類型。

允許void返回類型的C ++實現在C ++標准方面是不正確的。

C ++ 03標准S. 3.6.1-2:

實現不應預定義主函數。 此功能不應過載。 它應該具有int類型的返回類型,否則其類型是實現定義的。 所有實現都應允許以下兩個主要定義:

 int main() { /* ... */ } int main(int argc, char* argv[]) {/* ... */ } 

如果你想要可移植的C ++代碼,或者編寫好的C ++示例,那么你應該總是使用上面兩種變體之一。

main返回void是為了向后兼容而接受,但它不合法。

在這種情況下,退出代碼將為0.您仍然可以使用退出功能更改退出代碼。

C ++標准不允許main()具有返回類型的void。 但是,大多數編譯器會因歷史原因而通過它。

在從main返回void語言是合法的(不是C ++)的語言中,OS通常在正常(非異常)程序終止時看到返回值0

這就是為什么標准C ++不允許使用void main() - 雖然有些編譯器(例如gcc)允許它。

簡而言之:總是使用int main(),永遠不要使用main()。

But doesn't OS require int type value returned to specify whether program 
ended well or not?

它為什么總是這樣? 在雙擊圖標的窗口中,進程在結束后死亡。 操作系統不檢查那里的返回類型。 即使在Linux上,如果你只是運行二進制文件為./runBinary,它只是運行並退出。 操作系統本身不會顯示消息失敗或成功。

所有上述答案都是正確的,標准說它是int,但是一些編譯器也允許void。

根據編譯器的不同,您可以使用void main函數,但是正確的方法(真正符合標准的編譯器應遵循的方法)是返回int,其中0是一個很好的干凈退出,其他任何指示你的程序都有做錯了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM