8

当我将 #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 文件中我将 secondfile.cpp 放在 main.cpp 之后:

LOCAL_SRC_FILES := main.cpp \
                   secondfile.cpp

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

4

2 回答 2

16

那是对的。编译器一次只知道一个源文件。当您编译secondfile.cpp时,它完全忘记了您在main.cpp.

如果您希望 a#define在所有源文件中可见,则需要将其放在所有文件包含的标头中。或者,在命令行上传递它;你可以通过在你的Android.mk

LOCAL_CPPFLAGS := -DTEST_FOO=1
于 2012-06-12T13:00:29.970 回答
0

将它放在头文件中,并将头文件包含在您希望定义它的每个 .c 文件中。

于 2012-06-12T13:00:52.873 回答