当我将#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中的值?
答案 0 :(得分:16)
这是正确的。编译器一次只能知道一个源文件。当您编译secondfile.cpp
时,它完全忘记了您在main.cpp
中定义的任何内容。
如果您希望所有源文件中都显示#define
,则需要将其放在所有文件中都包含的标头中。或者,在命令行上传递它;您可以通过向Android.mk
添加类似内容来实现此目的:
LOCAL_CPPFLAGS := -DTEST_FOO=1
答案 1 :(得分:0)
将它放在头文件中,并在每个.c文件中包含头文件,以便在其中定义。