如何使-fpermissive标志生效?

问题描述 投票:2回答: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
c++ makefile android-ndk preprocessor-directive android.mk
2个回答
2
投票

实际上,这不是标志定义,因此您不应使用-Dflagname,而应使用-fpermissive,这是编译器的标志。

[-Dflagname具有#define flagname的作用,这不是您要做的。

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


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.