我見過使用void main
的D代碼。這合法嗎?如果是,則返回非void
(int
)也合法嗎?爲什麼在語言中允許這樣做?在D中使用`void main`
8
A
回答
11
main()函數
對於控制檯程序的main()作爲入口點。它在所有模塊初始化器運行之後以及任何單元測試運行之後被調用。它返回後,所有的模塊析構函數都會運行。主()必須使用下列形式之一聲明:
void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }
所以void main
是合法的。
從同一個文檔,return statement部分:
一個返回退出當前功能,並提供了返回值。如果函數指定的返回類型不是無效的,則表達式是必需的。表達式隱式轉換爲函數返回類型
所以看起來,從void函數返回的東西沒有被明確禁止(事實上這樣做編譯得很好)。
(你爲什麼要這麼做,雖然?)
+3
附錄:當'void main'結束時,D以0退出。當'main'由異常退出時,運行時會退出並顯示相應的錯誤代碼。不允許從非void函數返回值,並且會在運行時出錯。 – FeepingCreature
0
的main()
功能的以下版本都是合法的:
void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }
的void main
版本是一樣的int main
版本中,如果他們總是返回0或拋出。
相關問題
- 1. 關於void main()在C中的困惑
- 2. 在靜態中使用非靜態的自定義類void main
- 3. C++ void返回類型main()
- 4. 從main方法調用void方法,無法在void方法中傳遞參數
- 5. C中的main(void)和main()之間的區別
- 6. public static void main(String [] args)和public static void main(String args [])之間的區別?
- 7. 線程中的異常main java.util.illegalformatconversionexception d = java.lang.double
- 8. 在Servlet中使用的Websocket,是「public static void main(final String [] args)」需要嗎?
- 9. 使用int而不是字符串:public static void main(int [] args)
- 10. 我們可以使用public static void main(String [] [] args)嗎?
- 11. c void main函數?返回16值
- 12. 什麼是錯誤的void main()?
- 13. C++標準禁止void main()原型嗎?
- 14. 在d使用byPair
- 15. 靜態C#中的對象引用void main
- 16. 試圖在程序中新建一個ContextFactory> public static void Main
- 17. 在D中使用OpenSSL庫
- 18. 在另一個void中的void中使用字符串?
- 19. 在java中使用void函數的值
- 20. 如何使用void *?
- 21. 使用正則表達式識別窗體\ d \ d \ d \ d \ d \ d的日期
- 22. sigaction:使用「void(* sa_sigaction)(int,siginfo_t *,void *);」
- 23. 爲什麼人們在C++中使用`main()`而不是`int main()`?
- 24. 爲什麼要在public static void main(String [] args)上拋出異常?
- 25. java中的public static void main(String arg [])是否被修復?
- 26. 使用(void)awakeFromNib
- 27. 下,使用在main()排序
- 28. 在Main類中使用@Autowiered的NullPointerException
- 29. 選擇在Makefile中使用哪個main()
- 30. 在main(C++)中使用聲明
另請參閱http://stackoverflow.com/questions/3888661/how-can-d-return-0-on-success-and-non-zero-on-failure-if-main-is-void –