1. ホーム
  2. c

[解決済み] if-elseブロックの'if (0)'ブロックの目的は何ですか?

2022-05-13 02:24:45

質問

私の質問は、私が主題で言及した行についてであり、私はプロダクションコード内の多くの場所で見ることができます。

コード全体はこんな感じです。

if (0) {
    // Empty braces
} else if (some_fn_call()) {
    // actual code
} else if (some_other_fn_call()) {
    // another actual code
    ...
} else {
    // default case
}

他のブランチは私の質問と関係ありません。私が疑問に思っているのは if (0) を置いた意味は何なのでしょうか?中括弧は空なので、コードのブロックをコメントするようになっているとは思えません。コンパイラに何らかの最適化を強制しているのか、それとも意図が違うのでしょうか?

私はこの明示的なケースをここSOやインターネットで検索しようとしましたが、成功しませんでした。JavaScriptについては同様の質問がありますが、Cについてはありません。 if` 条件でゼロが代入されるとどうなるのでしょうか? という質問もありますが、これは変数へのゼロの代入について述べているのであって、「if (0)」の使い方そのものについて述べているのではありません。

どのように解決するのですか?

私は時々、これを左右対称に使うので、他の else if{ を気にすることなく、エディタで自由に動かすことができます。 if .

意味的には

if (0) {
    // Empty braces
} else 

の部分は何もしないので、オプティマイザが削除してくれるのを期待しましょう。