我使用宏創建main,並且需要能夠在編譯時檢查選定的子系統/ SUBSYSTEM:WINDOWS或/ SUBSYSTEM:CONSOLE,以生成適當的主功能。有沒有一個#define我可以檢查完成這個?是否存在與子系統關聯的#define
回答
如果您試圖讓您的庫的用戶(或其他任何用戶)變得容易,您可以從宏中生成WinMain
和main
。默認情況下,鏈接器將控制檯應用程序設置爲main
,而win32應用程序從WinMain
開始。另一個「主」功能將被忽略。
(大概是代碼的其餘部分不使用任何的主要功能參數(argc
,argv
,hInstance
等),如果它是既合作。)
的_CONSOLE
限定可以使用,但它不會自動出現;您必須手動將其添加到項目屬性中。另一方面,啓動符號的選擇是自動的。因此,提供這兩種功能並讓鏈接器選擇可能會使生活更輕鬆,因爲項目創建者不必設置任何東西,並且確實可以從Windows切換到控制檯應用程序(可能甚至是每個配置),而無需執行任何東西。
_CONSOLE
應該爲你做的伎倆。
如果你真的想走這條路線,你也可以選擇使用#pragma comment(linker, "/subsystem:windows")
或的子系統。
這絕對是更好的答案,因爲它直接回答了手動指定系統與讓鏈接器確定它(或更改項目設置)的原始問題。 – 2011-02-07 03:20:34
「_CONSOLE」如何定義? – jww 2016-10-02 05:01:44
這並非如此。您必須在控制檯應用程序和本地Windows應用程序中編寫截然不同的代碼。在控制檯應用程序中,您可以使用printf或cout來生成輸出,如果有任何鼠標使用,則不需要太多。本機Windows應用程序需要消息循環並創建一個窗口過程,該過程檢測WM_PAINT消息以更新窗口。等等。
但是你可以編寫兩種代碼。只需寫入main()和WinMain()函數,CRT就會自動調用正確的函數。
- 1. 在分佈式系統中是否存在父子過程關係和管道?
- 2. 取了關聯它的存在與否
- 3. Perl中是否存在與DBI無關的等價關係?
- 4. 是否存在與Android操作系統相當的IIS
- 5. 是否存在與類型類關聯的運行時懲罰?
- 6. Rails 3檢查是否存在關聯
- 7. Rails:驗證是否存在關聯
- 8. 聯接表(關聯表)是否有主鍵?多對多關係
- 9. java neo4j檢查是否存在關係
- 10. Laravel:查詢是否存在關係
- 11. 關聯數組與通配符在系統verilog
- 12. 如何檢查是否存在關係 - 多對多關係
- 13. 基於文件系統的壓縮緩存 - 這是否存在?
- 14. 在文件系統中Silverlight是否存在隔離存儲?
- 15. -Xmx屬性和可用的系統內存關聯
- 16. 與遠程系統akka.tcp的關聯:// SparkWorker失敗。爲什麼?
- 17. 保存與兩個實體之間的關係N-N關聯
- 18. 檢查用戶是否與m2m關聯
- 19. 該查找(關聯)表是否正確? (多對多的關係)
- 20. Django項目在系統上存在的位置是否重要?
- 21. 將聯繫人與用戶相關聯
- 22. ERD:關聯實體能否與弱實體有關係?
- 23. 選擇是否存在子關係(子查詢)作爲1/0列
- 24. NVM是否正在使用最新的Windows Linux子系統(WSL)?
- 25. 虛擬存儲系統關係
- 26. NoSQL系統保存關係數據
- 27. 系統設置將通知音量與鈴聲音量關聯
- 28. 安卓系統 - 是否存在與@ {@「key」相同的Objective-C語言文字:@「value」}
- 29. Laravel試圖檢查用戶是否與帖子有關係
- 30. 試圖檢查用戶是否存在與登錄系統在php
你不應該生成一個主函數,因爲生成它對你自己是毫無價值的,也是對他人的障礙。即它具有消極的效用。但是,如果你這樣做,就像生成一個`main`函數一樣,然後*生成一個標準的`main` *。無論構建的子系統如何,它都可以正常工作。注意:在這個部門有些挑戰的微軟工具中,除非你正在做一個MFC應用程序,否則設置鏈接器選項`/ entry:mainCRTStartup`,在這種情況下,你遇到了其他問題(即微軟)有接管`main`的相同的真正壞主意™。 – 2015-07-22 16:58:32