Loose-Info.com
Last Update 2021/09/11
TOP - 各種テスト - gcc - 警告関連のオプション - -Wmissing-braces

-Wmissing-braces
配列の初期化などでブレースによって完全に囲まれていない箇所がある場合に警告を出力

テスト概要

オプション無し、-Wmissing-braces、-Wallの各オプションを使用した際の警告出力例

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


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

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

使用ファイル


sample.c
#include <stdio.h> struct stA { int n; int a[2]; }; int main(void) { /* n1 : 完全な形でブレースで括られた配列の初期化ステートメント */ int n1[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; /* n2, n3 : ブレースで完全に括られていない配列の初期化 */ int n2[3][3] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; int n3[3][3] = {0, 1, 2, {3, 4, 5}, 6, 7, 8}; /* s1 : 完全な形でブレースで括られた構造体の初期化ステートメント */ struct stA s1 = {1, {2, 3}}; /* s1 : ブレースで完全に括られていない構造体の初期化ステートメント */ struct stA s2 = {1, 2, 3}; printf("%d --- %d --- %d --- %d --- %d\n", n1[0][0], n2[1][1], n3[2][2], s1.a[0], s2.a[1]); return 0; }

動作テスト

オプション無しでコンパイルを実行
$ gcc sample.c 警告無し $

-Wmissing-bracesオプション使用してコンパイルを実行
$ gcc -Wmissing-braces sample.c sample.c: In function ‘main’: sample.c:17:17: warning: missing braces around initializer [-Wmissing-braces] int n2[3][3] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; ^ { } { } { } sample.c:18:17: warning: missing braces around initializer [-Wmissing-braces] int n3[3][3] = {0, 1, 2, ^ { } sample.c:18:17: warning: missing braces around initializer [-Wmissing-braces] int n3[3][3] = {0, 1, 2, ^ { } sample.c:20:18: 6, 7, 8}; { } sample.c:26:18: warning: missing braces around initializer [-Wmissing-braces] struct stA s2 = {1, 2, 3}; ^ { } $ ブレースによる囲みの不足部分と、推奨追加位置からなる警告を出力

-Wallオプション使用してコンパイルを実行
$ gcc -Wall sample.c sample.c: In function ‘main’: sample.c:17:17: warning: missing braces around initializer [-Wmissing-braces] int n2[3][3] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; ^ { } { } { } sample.c:18:17: warning: missing braces around initializer [-Wmissing-braces] int n3[3][3] = {0, 1, 2, ^ { } sample.c:18:17: warning: missing braces around initializer [-Wmissing-braces] int n3[3][3] = {0, 1, 2, ^ { } sample.c:20:18: 6, 7, 8}; { } sample.c:26:18: warning: missing braces around initializer [-Wmissing-braces] struct stA s2 = {1, 2, 3}; ^ { } $ -Wallに-Wmissing-bracesが含まれるため関連する警告を出力