回答:
-fpermissive
非準拠コードに関する診断の一部をエラーから警告にダウングレードします。したがって、使用-fpermissive
すると、いくつかの非準拠コードをコンパイルできます。
結論:何をしているのかわからない場合は使用しないでください!
この-fpermissive
フラグにより、コンパイラーは実際にはエラーである(ただし一部のコンパイラーでは許可されている)いくつかを警告として報告し、言語規則に準拠していなくてもコードをコンパイルできるようにします。根本的な問題を本当に修正する必要があります。問題を示す最小のコンパイル可能なコードサンプルを投稿します。
-fpermissive
非準拠コードに関する診断の一部をエラーから警告にダウングレードします。したがって、使用-fpermissive
すると、いくつかの非準拠コードをコンパイルできます。
言語標準で許可されていないものを記述した場合(したがって、明確に定義された動作にはならないため、これを実行しない理由は十分あります)、次のように供給された場合、ある種の実行可能ファイルにマップされます。コンパイルエンジンは、-fpermissive
このエラーメッセージで停止する代わりに、それを実行します。場合によっては、プログラムは当初意図したとおりに動作しますが、他の解決策を使用しない特別な理由がない限り、これに依存すべきではありません。
このための実際の使用例が必要な場合は、非常に古いバージョンのX Windowsをコンパイルしてみてください(たとえば、分割のすぐ近くにある2004年のXFree86またはXOrgのいずれか)。gccの「最新」(咳)バージョンを使用します。 、4.9.3など。
ビルドCFLAGSが「-ansi」と「-pedantic」の両方を指定していることに気づくでしょう。理論的には、これは「何かが少しでも言語仕様に違反している場合は爆破する」ことを意味します。実際には、3.xシリーズのgccはその種のものをあまりキャッチしませんでした。4.9.3でビルドすると、CFLAGSとBOOTSTRAPCFLAGSを "-fpermissive"に設定しない限り、地面に喫煙穴が残ります。
このフラグを使用すると、これらのCファイルのほとんどが実際にビルドされ、レクサーが生成するバージョン依存の残骸に自由に移動できます。=]