2017-05-14 7 views
0

が、私はこのメッセージに係る助けを必要とする:C++のコンパイルエラー

cmd_general.cpp:警告:3433 'セーフモード' は、この関数で初期化されていない使用することができる

このエラーが何を意味するのかをsomoneは説明できますか?

これは、関数である:

ACMD(do_cards) 
{ 
    const char *line; 

    char arg1[256], arg2[256]; 

    line = two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2)); 
    switch (LOWER(arg1[0])) 
    { 
     case 'o': // open 
      if (isdigit(*arg2)) 
      { 
       DWORD safemode; 
       str_to_number(safemode, arg2); 
       ch->Cards_open(safemode); 
      } 
      break; 
     default: 
      return; 
    } 
} 
+1

あなたは初期化せずにそれを宣言し、関数に渡します。コンパイラが知っている限り、初期化されていない変数を実際の値で期待しているかもしれない2つの関数に渡して、警告を出します。簡単に修正できます。変数を初期化するだけです。 –

+0

'safemode'は' str_to_number() 'で使用されるまで値が割り当てられていない可能性が非常に高いです。そして、あなたはどのようにして '3k行の大量のコードでファイルを管理していますか? –

+0

'str_to_number'のタイプは何ですか?そして3433行は何ですか? – melpomene

答えて

0

あなたはそれを初期化せずにタイプDWORDの変数を宣言している:

DWORD safemode; 

次にあなたが関数に渡している。

str_to_number(safemode, arg2); 

コンパイラは、最初の引数の初期値がおそらく関数で使用されていないため、ここでは実際の問題ではありません。

警告を解決するには、単にデフォルト値で変数を初期化します。

DWORD safemode = 0; 
+0

右。 Tksは大変です。 –

+1

もう1つの解決策は、参照パラメータを介して "返す"ハックを使用する代わりに、戻り値を返すために 'str_to_number'を変更することです –

関連する問題