1
A
回答
1
你不應該這樣做。您應該分別編譯每個平臺,因此您應該已經知道該平臺是否適用於任何給定的二進制文件。
基本上,在運行時檢查操作系統是無用的,所以這樣做的可能性是一個有爭議的問題。
爲了幫助您記住C++在不同平臺上編譯C++的過程,請記住短語「write once, compile anywhere」。
我的建議是設置使編譯的行爲不同,這取決於你是否正在編譯爲Windows編譯時標誌。
4
使用
getenv("windir");
如果你得到NULL,那麼它不是窗戶。
這是可行的,因爲%windir%應該只在Windows系統上定義。當然,這是一個便宜且骯髒的黑客攻擊。
22
#ifdef _WIN32
cout << "This is Windows." << endl;
#endif
這將允許您定義塊只適用於Windows。只要預處理器宏被定義。
這是編譯時的事情,而不是運行時的事情。
0
如果是運行時,您可能會引用Wine(在非Windows操作系統上)。如果不是,那顯然是不可能的。 Windows二進制文件無法在其他操作系統中運行(除非它們具有Wine)。
如果是編譯的時候,可能重複:Are there any macros to determine if my code is being compiled to Windows?
(見上接受的答案)
相關問題
- 1. C++檢測操作系統版本
- 2. 檢測操作系統
- 3. (C#)檢測Windows操作系統的類型(非本地化)
- 4. 如何檢測ANT中的Windows操作系統
- 5. C++編譯時宏檢測windows操作系統
- 6. jQuery - 檢測操作系統和操作系統版本
- 7. 如何檢測操作系統
- 8. 如何檢測的Windows Small Business Server操作系統?
- 9. 檢測外殼腳本中的Windows操作系統版本
- 10. 在Clojure中檢測操作系統
- 11. 檢測操作系統版本 - Windows Phone 7或Windows Phone 8?
- 12. 在C/C++中自動檢測操作系統
- 13. 如何檢測Windows操作系統類型
- 14. 如何正確檢測Windows,Linux和Mac操作系統
- 15. 在Windows操作系統中的pathos軟件包操作系統
- 16. 在c#中檢索操作系統
- 17. Bash腳本操作系統檢測,如果和wget
- 18. 操作系統檢測,如果useragent值被改變
- 19. Javascript:操作系統檢測...如果在Linux上
- 20. 檢測其他分區上的Windows操作系統
- 21. CodeIgniter移動操作系統檢測
- 22. 檢測操作系統語言
- 23. 是否有宏檢測操作系統...?
- 24. Dojo有/ sniff和操作系統檢測
- 25. 操作系統架構檢測腳本
- 26. 從Firefox擴展檢測操作系統
- 27. AVR USB檢測操作系統
- 28. 鼠標檢測,操作系統啓動
- 29. 檢測操作系統級別的引發事件(操作系統外觀)
- 30. 使用JS檢測MacOS,iOS,Windows,Android和Linux操作系統
你是如何編譯代碼,二進制兼容多種操作系統兼容嗎? – 2010-12-06 05:39:37
你問的是編譯時間還是運行時間? – birryree 2010-12-06 05:40:05
運行時,程序運行時 – Daniel 2010-12-06 05:41:01