Android NDK #define问题

Nit*_*nai 8 android android-ndk c-preprocessor

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

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

#define TEST_FOO 1
Run Code Online (Sandbox Code Playgroud)

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

#if TEST_FOO
// do something <- this never gets reached
#endif
Run Code Online (Sandbox Code Playgroud)

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

LOCAL_SRC_FILES := main.cpp \
                   secondfile.cpp
Run Code Online (Sandbox Code Playgroud)

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

Gra*_*and 16

那是正确的.编译器一次只能知道一个源文件.编译时secondfile.cpp,它完全忘记了你可能已定义的任何内容main.cpp.

如果要#define在所有源文件中显示,则需要将其放在所有文件中包含的标题中.或者,在命令行上传递它; 你可以通过添加这样的东西来做到这一点Android.mk:

LOCAL_CPPFLAGS := -DTEST_FOO=1
Run Code Online (Sandbox Code Playgroud)