Loose-Info.com
Last Update 2021/03/06
TOP - 各種テスト - gcc - -fmessage-length=n オプション

-fmessage-length=n オプション
エラーメッセージを一行n文字程度に収まるように折り返して出力

テスト概要

その1
-fmessage-length=オプションを使用せずにコンパイル
n=0の場合と同様に、行の折り返しが行われずに各エラーメッセージを1行で出力
ターミナル(OSX)への出力例及びファイル出力例

その2
-fmessage-length=0 を指定してコンパイル
オプション不使用の場合と同様に、行の折り返しが行われずに各エラーメッセージを1行で出力
ターミナル(OSX)への出力例及びファイル出力例

その3
-fmessage-length=60 を指定してコンパイル
ターミナル(OSX)への出力例及びファイル出力例
ターミナル : 42文字
ファイル出力 : 53文字

その4
-fmessage-length=100 を指定してコンパイル
ターミナル(OSX)への出力例及びファイル出力例
ターミナル : 53文字
ファイル出力 : 90文字

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


コード例・出力内容中の表記

・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。

使用ファイル

main.c
/* -fmessage-length=n オプション動作確認用ソースファイル */ #include <stdio.h> int main(void) { /* 下記コードでエラーメッセージ発生 */ printf(""i); prinnntf("Error!!!\n") return 0; }

その1

-fmessage-length=オプションを使用せずにコンパイル

コンパイル実行
$ gcc main.c main.c: In function ‘main’: main.c:8:11: error: expected ‘)’ before ‘i’ printf(""i); ^ ) main.c:9:5: warning: implicit declaration of function ‘prinnntf’; did you mean ‘printf’? [-Wimplicit-function-declaration] prinnntf("Error!!!\n") ^~~~~~~~ printf main.c:9:27: error: expected ‘;’ before ‘return’ prinnntf("Error!!!\n") ^ ; main.c:11:5: return 0; ~~~~~~ $ 行の折り返しが行われずに各エラーメッセージを1行で出力

ファイルへの出力
$ gcc main.c 2> sample1.txt $
sample1.txt
出力内容はターミナルと同一の結果
main.c: In function ‘main’: main.c:8:11: error: expected ‘)’ before ‘i’ printf(""i); ^ ) main.c:9:5: warning: implicit declaration of function ‘prinnntf’; did you mean ‘printf’? [-Wimplicit-function-declaration] prinnntf("Error!!!\n") ^~~~~~~~ printf main.c:9:27: error: expected ‘;’ before ‘return’ prinnntf("Error!!!\n") ^ ; main.c:11:5: return 0; ~~~~~~

その2

-fmessage-length=0 を指定してコンパイル

コンパイル実行
$ gcc -fmessage-length=0 main.c main.c: In function ‘main’: main.c:8:11: error: expected ‘)’ before ‘i’ printf(""i); ^ ) main.c:9:5: warning: implicit declaration of function ‘prinnntf’; did you mean ‘printf’? [-Wimplicit-function-declaration] prinnntf("Error!!!\n") ^~~~~~~~ printf main.c:9:27: error: expected ‘;’ before ‘return’ prinnntf("Error!!!\n") ^ ; main.c:11:5: return 0; ~~~~~~ $ 行の折り返しが行われずに各エラーメッセージを1行で出力

ファイルへの出力
$ gcc -fmessage-length=0 main.c 2> sample2.txt $
sample2.txt
出力内容はターミナルと同一の結果
main.c: In function ‘main’: main.c:8:11: error: expected ‘)’ before ‘i’ printf(""i); ^ ) main.c:9:5: warning: implicit declaration of function ‘prinnntf’; did you mean ‘printf’? [-Wimplicit-function-declaration] prinnntf("Error!!!\n") ^~~~~~~~ printf main.c:9:27: error: expected ‘;’ before ‘return’ prinnntf("Error!!!\n") ^ ; main.c:11:5: return 0; ~~~~~~

その3

-fmessage-length=60 を指定してコンパイル

コンパイル実行
$ gcc -fmessage-length=60 main.c main.c: In function ‘main’: main.c:8:11: error: expected ‘)’ before ‘i’ printf(""i); ^ ) main.c:9:5: warning: implicit declaration of function ‘prinnntf’; <-- 42文字で折り返し did you mean ‘printf’? [ -Wimplicit-function-declaration] prinnntf("Error!!!\n") ^~~~~~~~ printf main.c:9:27: error: expected ‘;’ before ‘return’ prinnntf("Error!!!\n") ^ ; return 0; ~~~~~~ $

ファイルへの出力
$ gcc -fmessage-length=60 main.c 2> sample3.txt $
sample3.txt
折り返し文字数がターミナルと異なる
main.c: In function ‘main’: main.c:8:11: error: expected ‘)’ before ‘i’ printf(""i); ^ ) main.c:9:5: warning: implicit declaration of function <-- 53文字で折り返し ‘prinnntf’; did you mean ‘printf’? [ -Wimplicit-function-declaration] prinnntf("Error!!!\n") ^~~~~~~~ printf main.c:9:27: error: expected ‘;’ before ‘return’ prinnntf("Error!!!\n") ^ ; return 0; ~~~~~~

その4

-fmessage-length=100 を指定してコンパイル

コンパイル実行
$ gcc -fmessage-length=100 main.c main.c: In function ‘main’: main.c:8:11: error: expected ‘)’ before ‘i’ printf(""i); ^ ) main.c:9:5: warning: implicit declaration of function <-- 53文字で折り返し ‘prinnntf’; did you mean ‘printf’? [ -Wimplicit-function-declaration] prinnntf("Error!!!\n") ^~~~~~~~ printf main.c:9:27: error: expected ‘;’ before ‘return’ prinnntf("Error!!!\n") ^ ; return 0; ~~~~~~ $

ファイルへの出力
$ gcc -fmessage-length=100 main.c 2> sample4.txt $
sample4.txt
折り返し文字数がターミナルと異なる
main.c: In function ‘main’: main.c:8:11: error: expected ‘)’ before ‘i’ printf(""i); ^ ) main.c:9:5: warning: implicit declaration of function ‘prinnntf’; did you mean ‘printf’? [ -Wimplicit-function-declaration] 90文字で折り返し prinnntf("Error!!!\n") ^~~~~~~~ printf main.c:9:27: error: expected ‘;’ before ‘return’ prinnntf("Error!!!\n") ^ ; return 0; ~~~~~~