【问题标题】:Android NDK #define ProblemsAndroid NDK #define 问题
【发布时间】:2012-06-12 12:57:38
【问题描述】:

当我将#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

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

【问题讨论】:

    标签: android android-ndk c-preprocessor


    【解决方案1】:

    没错。编译器一次只知道一个源文件。当您编译@​​987654321@ 时,它完全忘记了您可能在main.cpp 中定义的任何内容。

    如果您希望#define 在您的所有源文件中可见,您需要将它放在包含在所有文件中的标头中。或者,在命令行上传递它;您可以通过在您的 Android.mk 中添加类似这样的内容来做到这一点:

    LOCAL_CPPFLAGS := -DTEST_FOO=1
    

    【讨论】:

    • 在 Application.mk 中使用多个库 APP_CPPFLAGS += -DTEST_FOO=1 也可以。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多