[C言語] switch文の中の変数の定義がエラーとなる

1. 症状

下記のようにswitchブロックの内部で変数宣言をおこなうとコンパイルエラーとなる。

 

1.1. Cコンパイラー(cc)のエラー・メッセージ

 

1.2. C++コンパイラー(g++)のときのエラー・メッセージ

 

2. 原因

  • C言語の場合、switch文が『一つのブロック・スコープ』であるため、スコープの途中で変数宣言を行うことができない。
  • C++の場合、case文を『jumpラベル』として扱うため、case文に飛ぶ(jumpする)前に全ての変数の初期化が終わっていなければならない。
    •  

      3. 修正方法

      変数定義をブロックに内包する。

       

      4. 関連項目