如何让-fpermissive标志生效?

时间:2015-09-10 23:19:50

标签: c++ makefile android-ndk preprocessor-directive android.mk

我用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

2 个答案:

答案 0 :(得分:1)

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

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

顺便说一下-fpermissive没有抑制错误,只是将它们降级为警告。

答案 1 :(得分:0)

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

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

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

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