Loose-Info.com
Last Update 2021/10/06
TOP - 各種テスト - gcc - 警告関連のオプション - -Wtraditional

-Wtraditional
旧来のC言語とISO C言語で挙動の異なる特定の構文に関して警告を出力

テスト概要

オプション無し、および-Wtraditionalオプションを使用した際の警告出力例

実行環境

GCC-8.2.0
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言語での問題となる項目についての警告