Answers:
该-fpermissive
标志使编译器将某些实际上是错误的东西(但某些编译器允许)报告为警告,以允许代码编译,即使它不符合语言规则。您确实应该解决潜在的问题。发布最小的,可编译的代码示例来说明问题。
-fpermissive
将有关不合格代码的某些诊断从错误降级为警告。因此,使用-fpermissive
将允许编译一些不合格的代码。
如果您需要一个真实的用例,请尝试使用gcc的“现代”(咳嗽)版本编译非常旧的X Windows版本(例如,大约2004年左右的XFree86或XOrg) ,例如4.9.3。
您会注意到构建CFLAGS同时指定了“ -ansi”和“ -pedantic”。从理论上讲,这意味着“炸毁任何东西甚至会稍微违反语言规范”。在实践中,3.x系列的gcc并没有捕获太多此类内容,并且使用4.9.3进行构建会在地面上留下一个烟囱,除非将CFLAGS和BOOTSTRAPCFLAGS设置为“ -fpermissive”。
使用该标志,大多数这些C文件将实际生成,使您可以自由地继续进行该词法分析器将生成的版本相关的残骸。=]