【发布时间】:2010-10-26 09:10:35
【问题描述】:
我的 NDK 项目中需要一些自定义宏 但是我没有理想的添加方法,也没有找到答案 有人可以帮忙吗? 非常感谢!
【问题讨论】:
标签: android-ndk
我的 NDK 项目中需要一些自定义宏 但是我没有理想的添加方法,也没有找到答案 有人可以帮忙吗? 非常感谢!
【问题讨论】:
标签: android-ndk
如果您想在编译 NDK 代码 (jni) 时添加特殊定义,请将以下内容添加到您的 Android.mk 中:
LOCAL_CFLAGS := -DMYDEFINE
这将在您的 c/c++ 代码中定义宏 MYDEFINE。这里是一个例子
#ifdef MYDEFINE
// We build the project with this special macro
#else
// We build without setting the macro in the LOCAL_CFLAGS
#endif
【讨论】:
-DMYDEFINE中的D
如果你理解正确,你需要看看C Preprocessor是如何工作的。
您有编写 C/C++ 程序的经验吗?首先,您应该对使用本机代码编写的应用程序的哪些部分非常挑剔。此外,您需要记住,在内存分配等方面,本机代码的行为会完全不同,所以这真的不是猜测的地方。
花一些时间了解 C/C++,明智地设计您的应用程序,以便清楚地定义您想用本机代码编写的部分,并且不会增加您的应用程序崩溃的机会。我猜大多数项目可以在没有原生应用程序部分的情况下完成,所以如果你正在使用它,并且不知道确切你在做什么,你真的应该重新评估它是否是正确与否。
【讨论】:
如果你说的是 android makefile 宏,比如
$(调用我的目录)
与 GNU makefile 语法完全相同
例如:
反向 = $(2) $(1)
foo = $(调用反向,a,b)
$(警告$(foo))
结果:
b 一个
【讨论】:
定义宏:
LOCAL_CFLAGS += -DYOUR_MACRO
用值定义宏:
LOCAL_CFLAGS += -DYOUR_MACRO='"string"'
或
LOCAL_CFLAGS += -DYOUR_MACRO=123
我个人建议使用 += 而不是 := 以避免 LOCAL_CFLAGS 被覆盖。
【讨论】: