2

我正在使用 NDK (Android) 用 c++ 构建一个库。输出告诉我一些代码被标记为错误,但可以通过使用 -fpermissive 标志来抑制。至少在我看来是这样。输出是:

MyClass.cpp:412:1: error: jump to label 'extractUp' [-fpermissive]
 extractUp:
 ^
jni/../../../../SharedSrc/MyClass.cpp:469:10: error:   from here [-fpermissive]
     goto extractUp;
          ^
jni/../../../../SharedSrc/MyClass.cpp:402:31: error:   skips initialization of 'Foo* ISC'
      Foo *ISC = new Foo;

导致错误的代码在这里不相关,因为我要问的问题是什么可能阻止 -fpermissive 标志生效。makefile(Android.mk)在设置标志的方式上似乎是正确的,但我对 make 文件知之甚少:

add_definitions(-DFPERMISSIVE=1)

我也尝试过 -Dfpermissive 以防所有大写都不允许,并尝试将其添加到 LOCAL_CFLAGS 中:

LOCAL_CFLAGS += -Dfpermissive

LOCAL_CFLAGS += -DFPERMISSIVE
4

2 回答 2

2

实际上这不是一个标志定义,所以你不应该使用,-Dflagname而只是-fpermissive,这是编译器的标志。

-Dflagname具有的效果#define flagname不是您需要做的。

顺便说一句,-fpermissive它不会抑制错误,它只是将它们降级为警告。

于 2015-09-10T23:23:32.257 回答
0

您可以在 Application.mk 文件中添加 APP_CFLAGS += 或 APP_CPPFLAGS +=。

对于 C++ 代码,您需要使用 APP_CPPFLAGS += -fpermissive

至于 C 代码,您使用 APP_CFLAGS += -fpermissive

如果您的项目包含这两个代码,也可以在 Application.mk 文件中同时使用它们。

于 2020-05-20T16:47:43.947 回答