我有一段代码来改变不同平台之间的调用.但我已经检测到使用iphone和ipad的问题,TARGET_OS_IPHONE定义仅适用于iphone,但没有ipad,我不想尝试使用别人认为是ipad,因为将来这可能会成为问题的根源.
我已经失去了2天寻找opencv矩阵中由此引起的颜色问题…..
我的问题是,在iOS S.O(Iphone和Ipad)中执行一段代码存在一个合适的解决方案官员吗?
选择代码的示例:
#ifdef __linux__
// All linux arch
#elif _WIN32
// Windows 32 and 64
#elif __APPLE__
#ifdef TARGET_OS_IPHONE
// iOS, no work with iPAD
#elif TARGET_IPHONE_SIMULATOR
// iOS Simulator
#elif TARGET_OS_MAC
// Other kinds of Mac OS
#else
// Unsupported platform
#endif
#elif __ANDROID__
// Android all versions
#else
// Unsupported architecture
#endif
解决方法:
在’__APPLE__’的情况下尝试包含“TargetConditionals.h”文件.
此文件包含所有引用Apple设备的宏.
无论如何,使用你的例子,正确的方法应该是:
#ifdef __linux__
// All linux arch
#elif _WIN32
// Windows 32 and 64
#elif __APPLE__
#include "TargetConditionals.h" // <--- Include this
#ifdef TARGET_OS_IOS // <--- Change this with a proper deFinition
// iOS, including iPhone and iPad
#elif TARGET_IPHONE_SIMULATOR
// iOS Simulator
#elif TARGET_OS_MAC
// Other kinds of Mac OS
#else
// Unsupported platform
#endif
#elif __ANDROID__
// Android all versions
#else
// Unsupported architecture
#endif
此外,你可以在那里定义’TARGET_OS_IPHONE’,但’TARGET_OS_IOS’更合适.
您可以直接包含此文件,也可以在路径中找到它:’/ Applications /Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/TargetConditionals .H’.