在程式中若是要因應不同的作業系統而有不同的內容,則可以用底下的方法來處理。
#ifdef _Windows
….. (windows 下的程式)....
#endif
底下是目前在 C++ Builder 實際試出來的。
Win32 下有
_WINDOWS_
_Windows
WIN32
_WIN32
__WIN32__ (注意 : 這個在 Win64 沒有)
Win64 下有
_WINDOWS_
_Windows
WIN32
_WIN32
_WIN64
後來在這裡有查到一些,但沒有我測試的完整
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/WIN32#win32
看來判斷 Windows 可用 _Windows
Win32 則用 __WIN32__
Win64 則用 _WIN64
Android 則用 __ANDROID__
Mac 和 iOS 則用 __APPLE__
iOS 則用 TARGET_OS_IPHONE
32位元手機則用 __arm__
64位元手機則用 __arm64__
利用以上去組合,應該就可以判斷了。
補充: 後來看到這篇
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Creating_an_iOS_App
提到 iOS 可以使用 TARGET_OS_IPHONE 來判斷。
還有如下例子:
#if (TARGET_OS_IPHONE)
// Code for iOS devices only.
#endif
#if (TARGET_OS_IPHONE) && (__arm__)
// Code for 32-bit iOS devices only.
#endif
#if (TARGET_OS_IPHONE) && (__arm64__)
// Code for 64-bit iOS devices only.
#endif