如何在 C/C++ 中检测 Android NDK 的编译文件?
是否有一个预处理器宏可以让我知道 NDK 正在编译我的代码?我可以手动定义自己的,但如果可能的话我宁愿不这样做。
Is there a preprocessor macro that will let me know NDK is compiling my code? I could manually define my own, but I'd rather not if possible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
通过运行预处理器可以看到它是
#ifdef __ANDROID__
:输出是:
不需要依赖于项目中的定义内容,特别是如果您跳过 NDK 构建系统。
It is
#ifdef __ANDROID__
as seen by running the preprocessor:The output is:
No need to depend on defining stuff in your project especially if you're skipping the NDK build system.
这是一个迟到的答案,但为了完整起见,这里是包含任何头文件之前 android-eabi 的预处理器定义。 C++ 头文件将引入大量附加头文件。
以下输出来自在 C/C++ 源文件中检测 Android(预处理器宏) (大约 2013 年)在 Android NDK 邮件列表中。请注意,已定义
__ANDROID__
,但未定义__android__
或ANDROID
。This is a late answer, but for completeness, here are the preprocessor definitions for android-eabi before including any header files. A C++ header will bring in a slew of additional headers.
The output below is from Detecting Android in C/C++ Source Files (Preprocessor Macros) (circa 2013) on the Android NDK mailing list. Notice
__ANDROID__
is defined, but not__android__
orANDROID
.简短回答:
#ifdef ANDROID
。ANDROID
宏是在 build-module.mk(标准构建系统的一部分)中为您定义的:Short answer:
#ifdef ANDROID
.The
ANDROID
macro is defined for you in build-module.mk (part of the standard build system):