我將代碼從Solaris移植到Windows Visual Studios。爲了使代碼兼容,我使用了#if defined(Win32)和#ifdef(OSTYPE_solaris)等語句。我發現Win32被定義在哪裏,但我找不到OSTYPE_solaris的定義。我想我可能找不到它的定義,因爲我正在Visual Studio上查找它,並且定義OSTYPE_solaris的標題在Visual Studios上不可用。我在這個假設中糾正了嗎?如果是這樣,有誰知道OSTYPE_solaris是在哪裏定義的?我搜索了一下,但我沒有找到這個問題的運氣。我也與OSTYPE_linux有同樣的難題。OSTYPE_solaris定義在哪裏
0
A
回答
0
我的猜測是它們是由編譯器本身定義的。如果Solaris使用gcc作爲編譯器,則可以檢查編譯器定義的變量,例如:
echo「」| gcc -E -dM -
但我認爲你不應該在大多數情況下通過平臺ifdef,最好是使用基於特徵的定義,如HAVE_SOCKET_H。但是,這需要在多平臺構建系統上進行更多的工作,只需提供這些定義即可,您可能不需要它們。
相關問題
- 1. LPPICTURE在哪裏定義?
- 2. Enum.values()定義在哪裏?
- 3. BCRYPT_HASH_FUNCTION_TABLE在哪裏定義?
- 4. RestClient.send在哪裏定義?
- 5. IRepository定義在哪裏 - ServiceStack
- 6. 定義yearMonthDuration在哪裏?
- 7. FireDAC pbByNumber在哪裏定義?
- 8. DEBUG宏定義在哪裏?
- 9. kill_proc_info定義在哪裏?
- 10. glTextureVertexPointer定義在哪裏?
- 11. XMLHttpRequest.responseStream在哪裏定義?
- 12. 「sprite」在哪裏定義?
- 13. UNS_32定義在哪裏?
- 14. __NR_accept的定義在哪裏?
- 15. copy_to_user在哪裏定義
- 16. NSLineSeparatorCharacter在哪裏定義?
- 17. _kCLLocationAccuracyBest在哪裏定義?
- 18. DIR定義在哪裏?
- 19. GL_UNSIGNED_INT_8_8_8_8_REV在哪裏定義?
- 20. Widget.Material.Light.TextView.ListSeparator在哪裏定義?
- 21. uc_mcontext定義在哪裏?
- 22. callback()的定義在哪裏?
- 23. getActivity()它在哪裏定義?
- 24. UDP_TABLE_CLASS值在哪裏定義?
- 25. ERROR_PENDING在哪裏定義?
- 26. ConfigDSN定義在哪裏?
- 27. DeleteMediaType()定義在哪裏?
- 28. App :: Application.load_tasks在哪裏定義?
- 29. 這裏定義的樣式在哪裏?
- 30. 在哪裏定義NSArray以及在哪裏定義按鈕操作?
我會研究#ifdef以外的其他選擇。我正在將Visual Studio功能添加到已經是多平臺的項目中,並且#ifdef一直是所有其他平臺的慣例,所以現在改變它可能不是一種選擇。 我在Visual Studios上工作得更多,所以一旦我在Unix編譯器中,我會嘗試使用您的建議來檢查OSTYPE! – 2012-07-31 15:53:02