[解決済み】 switch case: error: case label does not reduce to an integer constant
2022-01-29 17:45:37
質問
int value;
const int signalmin = some_function();
switch(value)
{
case signalmin:
break;
}
some_functionの値を読み込んで、そのint値を使ってswitch case onをするのです。C99コンパイラは返してくる。
error: case label does not reduce to an integer constant
しかし、私は
#define
なぜなら、スイッチが実行される前に int 値が読み込まれるからです。
どのように解決するのですか?
switch
ラベルは定数式でなければならず、コンパイル時に評価されなければなりません。実行時の値で分岐させたい場合は
if
.
A
const
-修飾された変数は
定数式
それは単に、変更することが許されない値です。
整数の定数式の形式は、6.6 (6) [C99およびC2011規格のn1570ドラフト]に詳述されています。
6 An 整数定数式 は整数型であり、オペランドのみを持つものとする。 は、整数定数、列挙定数、文字定数である。
sizeof
結果が整数定数である式。_Alignof
式、および浮動小数点 定数は、キャストの直接のオペランドとなります。整数定数におけるキャスト演算子 の一部を除いて、算術型を整数型に変換するだけである。 オペランドをsizeof
または_Alignof
演算子を使用します。
のみという制約があります。
sizeof
結果が整数定数になる式は
sizeof
オペランドが可変長配列である式。
関連
-
[解決済み] (.text+0x20): `main'への未定義の参照と関数への未定義の参照
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】GCC Cコードで静的宣言が非静的宣言に続くことを解決するには?
-
[解決済み】cudamalloc()の使用。) なぜダブルポインタなのか?
-
[解決済み】EAGAINとはどういう意味ですか?
-
[解決済み] C: エラー: ';'トークンの前に ')' があると予想される
-
[解決済み】スタックスマッシュを検出しました
-
[解決済み】配列型char[]が代入できない [重複]。
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】ポインタへの代入時に互換性のないポインタ型からの初期化警告が発生した
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】EAGAINとはどういう意味ですか?
-
[解決済み】 「配列のイニシャライザーはイニシャライザーリストまたは文字列リテラルでなければなりません」と表示されるのですが?
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】宣言指定子で2つ以上のデータ型がある場合のエラー【非公開