我用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
答案 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文件中同时使用它们。