LoginSignup
6
7

More than 5 years have passed since last update.

【メモ】switch文内での変数の宣言によるエラー【C++】

Last updated at Posted at 2012-11-02

DxLibでSTGを作っているのですが先日エラーに遭遇したのでこちらに記しておきます。

#include <stdio.h>
int main(){
    static int i = 0;

    switch(i){
    case 0:
        static int k = 0;
        printf("%d",&k);
        break;
    case 1:
        break;
    }
}

このように記述すると、

'k' の初期化が 'case' ラベルによって行われませんでした。
'k' の宣言を確認してください。

このようなエラーが返されます。
解決法としては Case:{宣言と処理} という風にブロックで囲めば解決します。

このエラーは変数 k のスコープが case 文内ではなく、 switch 文内になっていることが原因です。もし case 1: に飛び、そこで k を使用した処理がされていた場合、初期化されてないことなるのでコンパイラが自動的にエラーを返します。もしエラーを無視して実行してもこのコードであれば動くはずです。間違いがあれば指摘してください。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7