Android NDK #define问题

时间:2012-06-12 12:57:38

标签: android android-ndk c-preprocessor

当我将#define添加到main.cpp或从main.cpp调用的一个头文件时,它似乎没有在其他文件中定义。

例如,在main.cpp中,我可能会执行以下操作:

#define TEST_FOO 1

然后在我的其他一个文件中,例如secondfile.cpp,忽略TEST_FOO,好像它从未定义过:

#if TEST_FOO
// do something <- this never gets reached
#endif

即使在Android.mk文件中,我在main.cpp之后放置了secondfile.cpp:

LOCAL_SRC_FILES := main.cpp \
                   secondfile.cpp

有没有办法在实际代码中#define Android NDK中的值?

2 个答案:

答案 0 :(得分:16)

这是正确的。编译器一次只能知道一个源文件。当您编译secondfile.cpp时,它完全忘记了您在main.cpp中定义的任何内容。

如果您希望所有源文件中都显示#define,则需要将其放在所有文件中都包含的标头中。或者,在命令行上传递它;您可以通过向Android.mk添加类似内容来实现此目的:

LOCAL_CPPFLAGS := -DTEST_FOO=1

答案 1 :(得分:0)

将它放在头文件中,并在每个.c文件中包含头文件,以便在其中定义。