这是我的第一个博客或问题。我想开发平台抽象层(PLA)的移动应用程序使用c++。例如,从移动应用程序中,我可以与蓝牙设备对话,而不受干扰,而该设备正在运行底层操作系统(如IOS、ANDROID等)。因此,我需要发现哪个操作系统正在运行,无论是IOS还是安卓,都使用c++代码,但不调用任何操作系统的原生API。
提前谢谢!
谢谢拉朱。
发布于 2014-01-15 13:35:21
即使您正在开发跨平台代码,当编译它的时候,您也需要针对一个平台。因此,确定它是一个检查预编译器定义的问题。
大多数编译器在编译时都会定义一些平台,如果不是,您可以在配置项目时自己完成。
例如,在编译__APPLE__和Mac项目时,Xcode将分别定义iOS、TARGET_OS_IPHONE和TARGET_OS_MAC。
对于Android,__ANDROID__应该由工具链定义,但是我已经看到多个mk文件添加了明确的平台标志,如下所示:
LOCAL_CFLAGS := -DANDROID $(LOCAL_CFLAGS)因此,这是一个使用预汇编条件的问题:
#ifdef __APPLE__
#if TARGET_OS_IPHONE
// Configure for iPhone
#endif
#endif
#ifdef ANDROID
// Configure for Android
#endif为了确定版本,如果不调用本机API,就不可能真正做到这一点。幸运的是,您可以使用一些模式来筛选特定的实现,并在代码前面放置一个通用接口。
就IDE而言,这在很大程度上是一个选择和可用性问题。最流行的是用于iOS的Xcode和用于Android的,但也可以使用其他的。
https://stackoverflow.com/questions/21136263
复制相似问题