GCC警告ケースのラベル値がタイプの最大値を超えているのはどういう意味ですか?

KEY_F(9) は 273 になり (curses.h を参照)、char の範囲 (-128,127) を超えます。


char は -128 から 127 までの数値です。KEY_F(9) はおそらくその範囲外の値です。

用途:

  • unsigned char、または
  • 整数、または
  • (文字) KEY_F(9)

または、デバッガーを使用して sizeof(KEY_F(9)) を決定し、short ではなく byte であることを確認してください。


この場合、KEY_F(9) char の範囲外に評価されています . switch ステートメントは、その引数が char であるため、それを想定しています 、すべてのケース ラベルも同様になります。 switch の変更 switch((unsigned int)ch) を読む 治します。