gccコンパイルオプション -fpermissive
2022-02-15 21:31:41
manマニュアルでのこのオプションの説明は以下の通りです。
-fpermissive
不適合なコードに関するいくつかの診断を、エラーから警告に格下げします。したがって、-fpermissive を使用すると、一部の不適合コードのコンパイルが可能になります。
このオプションは、不適合コードに関する診断をエラーから警告にダウングレードします。
このオプションは、コードチェックの厳密性を低下させるため、避けた方がよいでしょう。
例
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const static char *source = "source";
int main(int argc, char *argv[])
{
char buf[512];
snprintf(buf, "%s", source);
return 0;
}
このコードでは、snprintfは第2パラメータsizeof(buf)を使用しておらず、このオプションを使用しない場合、コンパイル結果は次のようになります。
fpermissive.cpp: In function 'int main(int, char**)':
fpermissive.cpp:10: Error: Invalid conversion from type 'const char*' to type 'size_t'
fpermissive.cpp:10: error: initializing real parameter 2, of type 'int snprintf(char*, size_t, const char*, ...)'
ご覧の通り、エラーが報告され、そのオプションでコンパイルすると、以下のようになります。
fpermissive.cpp: In function 'int main(int, char**)':
fpermissive.cpp:10: Warning: Invalid conversion from type 'const char*' to type 'size_t'
fpermissive.cpp:10: warning: initializing real parameter 2, of type 'int snprintf(char*, size_t, const char*, ...)'
ご覧のように、エラーレベルから警告レベルに落ちることで、プログラムに予期せぬ問題が発生する可能性があるので、そのオプションの使用は避けた方がよいでしょう。
関連
-
[解決済み】ファイル形式が認識されない。GCCを使用してリンカスクリプトとして扱う
-
[解決済み] gcc エラー : `itoa' への未定義の参照
-
[解決済み] g++ 出力: ファイルが認識されません。ファイル形式が認識されない
-
[解決済み] gcc/g++とcc1/cc1plusの違いは何ですか?
-
[解決済み] シュール vs サール ... x86 アセンブリ gnu
-
[解決済み] 警告: 異なるサイズの整数への/からのポインタへのキャスト
-
[解決済み] 自作のmakefileを作成する【エラー255】。
-
[解決済み] gccのオプションにある-m32、-m64、nothingの違いは何ですか?
-
[解決済み] シグナル11[SIGSEGV]のデフォルトアクションでプロセスが終了しています。
-
configure: エラー: $PATH に受け入れ可能な C コンパイラがありません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】valgrindエラーの解釈 サイズ4の無効な書き込み
-
[解決済み】gcc makefileのエラー。"No rule to make target ..." (ターゲットを作るルールがない)
-
[解決済み】g++ output: file not recognized: ファイル形式が認識されない
-
[解決済み] コンパイル時に127のエラーが発生する。
-
[解決済み] gcc エラー:間違った ELF クラスです。ELFCLASS64
-
[解決済み] プリプロセッサー出力
-
[解決済み] .ascizと.stringアセンブラディレクティブの違いは何ですか?
-
[解決済み] gccの-lpthreadオプション
-
[解決済み] 静的にリンクされたライブラリでGCCのリンク時最適化を使用する
-
C++コンパイルエラー:型に名前がない