我正在使用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

最佳答案

实际上,这不是标志定义,因此您不应使用-Dflagname,而应仅使用-fpermissive,它是编译器的标志。
-Dflagname具有#define flagname的作用,这不是您需要执行的操作。

通过-fpermissive不能抑制错误,它只是将其降级为警告。

关于c++ - 如何使-fpermissive标志生效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32513101/

10-11 16:25