如果使用跨平台Android / iOS在C中的def不能正常工作

我有一段代码来改变不同平台之间的调用.但我已经检测到使用iphone和ipad的问题,TARGET_OS_IPHONE定义仅适用于iphone,但没有ipad,我不想尝试使用别人认为是ipad,因为将来这可能会成为问题的根源.

我已经失去了2天寻找opencv矩阵中由此引起的颜色问题…..

我的问题是,在iOS S.O(Iphone和Ipad)中执行一段代码存在一个合适的解决方案官员吗?

作为参考,我总是在this链接.

选择代码的示例:

#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’.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...