Last Update 2021/10/06
-Wtraditional
旧来のC言語とISO C言語で挙動の異なる特定の構文に関して警告を出力
テスト概要
オプション無し、および-Wtraditionalオプションを使用した際の警告出力例
実行環境
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
GNU C Library 2.28
GNU Binutils 2.31.1
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
使用ファイル
sample.c
#include <stdio.h>
/* インデントされたプリプロセッサ指令 */
#include <limits.h>
int main(void)
{
int n;
int nlbl = 0;
/* 語末記号「F」を使用 */
float f = 1.23F;
/* 単項のプラス演算子 */
n = +2;
/* 識別子と重複するラベル名 */
nlbl:
printf("%d %d %f\n", nlbl, n, f);
return 0;
}
オプション無しでコンパイルを実行
$ gcc sample.c エラー・警告無し
$
-Wtraditionalオプション使用してコンパイルを実行
$ gcc -Wtraditional sample.c
sample.c:3:3: warning: traditional C ignores #include with the # indented [-Wtraditional]
#include <limits.h>
^~~~~~~
sample.c: In function ‘main’:
sample.c:5:5: warning: traditional C rejects ISO C style function definitions [-Wtraditional]
int main(void)
^~~~
sample.c:11:12: warning: traditional C rejects the "F" suffix [-Wtraditional]
float f = 1.23F;
^~~~~
sample.c:14:6: warning: traditional C rejects the unary plus operator [-Wtraditional]
n = +2;
^
sample.c:17:1: warning: traditional C lacks a separate namespace for labels, identifier ‘nlbl’ conflicts [-Wtraditional]
nlbl:
^~~~
$ 旧来のC言語での問題となる項目についての警告