[英]C++ void return type of main()
一些C ++編譯器允許main函數返回類型為void
。 但是,操作系統是否需要返回int
類型值來指定程序是否正常結束?
C ++ 不允許 main
有void
返回類型。 已發布的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.