【问题标题】:Android NDK code analysis not using defined variables未使用已定义变量的 Android NDK 代码分析
【发布时间】:2012-12-18 08:41:50
【问题描述】:

我认为这个问题是在升级到 Juno Eclipse 时开始的。我相信 C/C++ 构建环境可能也同时升级了。 NDK没有升级。

我们有大量可以在多个平台下编译的 C 代码。我们正在使用 crystax-ndk (r6) 来编译我们的 C++ 代码。要知道我们何时为 Android 编译,我们在 Android.mk 中定义了以下内容

LOCAL_CFLAGS := -DANDROID_NDK \
            -DDISABLE_IMPORTGL \
                 ...

然后在某些文件中,我们将根据平台包含不同的标题

#ifdef ANDROID_NDK
     ...

我们的代码编译得很好,似乎运行良好。但是,当打开某些文件时,C/C++ 代码分析器会发现很多错误。这似乎是因为分析器不知道 ANDROID_NDK 定义的变量。

知道为什么代码分析器不使用与编译器相同的#defines 吗?由于分析器报告的所有虚假错误,代码几乎无法编辑。

【问题讨论】:

  • 什么分析仪?无论如何,它可能并没有完全解析您的 Android.mk,如果它甚至试图完全解析的话。您可能必须以其他方式将适用的定义传递给它。
  • 它只是 Eclipse 的 C/C++ 插件附带的标准分析器(或者在使用 NDK 时可能会被替换)。项目属性中似乎没有任何东西可以设置分析器,所以我猜这只是默认值。

标签: android android-ndk analyzer


【解决方案1】:

我看到你在评论你所指的分析器。

Eclipse CDT(C/C++ 开发工具包)不支持解析 Android.mk,但在撰写本文时,NDK 插件也没有添加该功能。

可能(丑陋/烦人)的解决方法:设置一个头文件,设置您缺少的定义,并将该头文件包含到所有文件中。

【讨论】:

  • 好的,这就解释了。目前我刚刚关闭了大多数分析器警告/错误,因此它们不会妨碍我。
【解决方案2】:

在你的 Android.mk 中使用 LOCAL_CPPFLAGS 用于 C++ 文件,LOCAL_CFLAGS 用于 C 文件

【讨论】:

  • 作为测试,我复制了 LOCAL_CFLAGS 并调用了 dup LOCAL_CPPFLAGS。这样做没有帮助。我认为不会,因为 C 是 C++ 的子集,而 LOCAL_CFLAGS 通常在编译 C++ 时被继承。不过感谢您的尝试。
  • 你是对的,这在 android-ndk-1.5_r1 之后发生了变化。从那时起,LOCAL_CFLAGS 用于 C/C++,LOCAL_CPPFLAGS 仅用于 C++
猜你喜欢
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 2020-02-05
相关资源
最近更新 更多