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

-Wvla
コード内で可変長配列を使用されている場合に警告を出力
-std=c90と併用して-Wpedanticオプションを使用した際は、-Wno-vlaオプション追加で-Wvlaの警告を抑制

テスト概要

その1
オプション無し、および-Wvlaオプションを使用したコンパイル時の警告出力例

その2
-std=c90オプション使用した際に、オプション無し、-Wpedanticオプションの使用時、 および-Wpedanticに-Wno-vlaオプションを追加した際の各々の警告出力例

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


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

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

使用ファイル


sample.c
#include <stdio.h> void sampFunc(int n) { int i; /* 可変長配列を宣言 */ char c[n]; for (i=0; i<n; i++) { c[i] = i * 2; } for (i=0; i<n; i++) { printf("%d ", c[i]); } printf("\n"); } int main(void) { sampFunc(5); return 0; }

その1

-Wvlaオプションを使用したコンパイル時の警告出力例

オプション無しで実行
$ gcc sample.c エラー・警告無し $

-Wvlaオプションを指定して実行
$ gcc -Wvla sample.c sample.c: In function ‘sampFunc’: sample.c:6:2: warning: ISO C90 forbids variable length array ‘c’ [-Wvla] char c[n]; ^~~~ $ ISO C90が可変長配列を禁止している事についての警告

その2

-std=c90オプション使用した際に、オプション無し、-Wpedanticオプションの使用時、 および-Wpedanticに-Wno-vlaオプションを追加した際の各々の警告出力例

-std=c90オプションのみを指定して実行
$ gcc -std=c90 sample.c エラー・警告無し $

-std=c90と-Wpedanticオプションを同時に指定して実行
$ gcc -std=c90 -Wpedantic sample.c sample.c: In function ‘sampFunc’: sample.c:8:2: warning: ISO C90 forbids variable length array ‘c’ [-Wvla] char c[n]; ^~~~ $ -std=c90指定時は-Wpedanticに-Wvlaが含まれる

-std=c90と-Wpedanticオプションに-Wno-vlaオプションを追加指定して実行
$ gcc -std=c90 -Wpedantic -Wno-vla sample.c エラー・警告無し $ -Wno-vlaオプションにより-Wvlaによる警告を抑制