什么是优先标志?

我只是想知道在g ++编译器中, -fpermissive标志是做什么的? 我正进入(状态:

错误:以临时地址[-fpermissive]

我可以通过给编译器提供-fpermissive标志来解决这个-fpermissive

编辑 :我刚刚发现是什么导致临时地址错误的一部分! 我现在要解决这个问题

正确的文件 :

-fpermissive
将一些关于不一致代码的诊断从错误降级到警告。 因此,使用-fpermissive将允许一些不合格的代码进行编译。

底线: 不要使用它,除非你知道你在做什么!

-fpermissive标志导致编译器报告一些实际上是错误的东西(但是被某些编译器所允许)作为警告,即使它不符合语言规则,也允许编译代码。 你真的应该解决根本问题。 发布最小,可编译的代码示例来演示问题。

-fpermissive
将一些关于不一致代码的诊断从错误降级到警告。 因此,使用-fpermissive将允许一些不合格的代码进行编译。

当你写了一些语言标准所不允许的东西(因此不可能是真正的定义良好的行为,这是不够的理由),但是如果天真地喂编译引擎,然后-fpermissive将做到这一点,而不是停止这个错误消息。 在某些情况下,程序的行为将完全按照您的初衷进行,但您绝对不应该依赖它,除非您有一些非常特殊的理由不使用其他解决scheme。

如果你想要一个真实世界的用例,试着编译一个非常旧的版本的X Windows–比方说XFree86或者从2004年的XOrg开始,在分裂的周围 – 使用gcc的“现代”(咳嗽)版本如4.9.3。

你会注意到构buildCFLAGS同时指定了“-ansi”和“-pedantic”。 从理论上讲,这意味着,“如果有的话甚至略微违反语言规范,就要炸掉”。 实际上,3.x系列的gcc并没有抓到太多的东西,用4.9.3构build它将会在地面上留下一个吸烟孔,除非你把CFLAGS和BOOTSTRAPCFLAGS设置为“-fmissiveive”。

使用该标志,大多数C文件将实际构build,让您自由移动到词法分析器将生成的依赖于版本的残骸。 =]