【发布时间】:2011-05-19 17:26:13
【问题描述】:
我在 iOS 应用和 Android 应用中重用旧版 C 库。我想自定义一些宏定义(例如用于日志记录)。是否有标准定义来检查(使用#ifdef)代码是为 iOS 还是 Android/NDK 编译的?
【问题讨论】:
-
请不要为此使用
#ifdef。编写可移植代码并将平台特定的问题放在具有通用接口的每个平台模块中。 -
放入不同的模块,分别使用不同的包含路径编译
-
一般来说,但必须平衡差异的大小与保持功能有序的愿望。过度使用抽象就像使用不足一样容易使代码不可读。如果我有一大块相同的代码,除了在 unix 系统调用中继承的 linux-vs-bsd 差异之外,我可能会在此处添加注释#ifdef,而不是发明一个新的便携式 unix 个人概念并将实现埋在从某个头文件中提取的内联函数中。
标签: android c ios portability android-ndk