我見過使用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. c#中static void main(string [] args)和static void main()之間的區別?
- 2. int main(void)在C++中有效嗎?
- 3. 關於void main()在C中的困惑
- 4. int main()和void main()如何工作
- 5. 在靜態中使用非靜態的自定義類void main
- 6. int main(void)給出錯誤
- 7. public static void main in java
- 8. C++ void返回類型main()
- 9. 從main方法調用void方法,無法在void方法中傳遞參數
- 10. 爲什麼c允許main(),即使它不是int main()或void main()?
- 11. 從哪裏調用public static void main?
- 12. 如何從Main調用void函數
- 13. 如何使用Ninject.Extensions.Logging將記錄器置於void Main中?
- 14. C++ void作爲函數調用的前綴。例如。 `main(){void func();}`
- 15. C中的main(void)和main()之間的區別
- 16. public static void main(String [] args)和public static void main(String args [])之間的區別?
- 17. 線程中的異常main java.util.illegalformatconversionexception d = java.lang.double
- 18. 在Servlet中使用的Websocket,是「public static void main(final String [] args)」需要嗎?
- 19. 我們可以使用public static void main(String [] [] args)嗎?
- 20. 使用int而不是字符串:public static void main(int [] args)
- 21. int main()和int main(void)之間的區別?
- 22. 在java中使用instanceof Void
- 23. 在d使用byPair
- 24. 什麼是錯誤的void main()?
- 25. c void main函數?返回16值
- 26. 將void *類型傳遞給main()函數
- 27. C#static void Main不應該公開嗎?
- 28. Void對於變量main是無效的?
- 29. C++標準禁止void main()原型嗎?
- 30. void main和int之間的區別主
另請參閱http://stackoverflow.com/questions/3888661/how-can-d-return-0-on-success-and-non-zero-on-failure-if-main-is-void –