web-dev-qa-db-ja.com

#if 0 vs #if(1> 1)?どんな手掛かり

私はレガシーコードで作業していて、これを見つけました:

#if (1 > 1)
//define some function
#endif

よくわかりませんが、これがより一般的な#if 0、コードをコメントアウトするには?何かご意見は?

30
MIbrah

どちらの式もfalseであるため、コードがコンパイルされることはありません。

プログラマーが明白な_#if 0_プリプロセッサーディレクティブを使用してコードのセクションを無効にしたくない理由の潜在的な説明は次のとおりです。

  • プログラマーは、_grep '#if 0'_が自分のコードスニペットを見つけることを望んでいませんでした。
  • ローカルコーディング規約は_#if 0_を許可せず、スクリプトでこのルールを適用する可能性があります。プログラマーは、ゆがんだ回避策を見つけました。
  • 一部のプログラマーのエディター(例:vim)は、_#if 0_セクションをコメントとして色付けし、別のプリプロセッサー式を使用するとこれを無効にします。
  • プログラマーは、_#if_の後にブール式が必要だと思ったかもしれません。括弧の使用はこの説明をサポートしますが、プログラマーだけが知ることができます。
  • 元のコードには#if (OPTION > 1)があり、OPTIONsedスクリプトまたはその他のグローバルテキスト置換メソッドを使用して_1_に変更されました。
  • プログラマーは次の読者の注意を引き付けたいと思ったかもしれません。ユーモラスな目的またはその他のあいまいな目標のいずれか。この場合、目標は達成されました。
  • いくつかのコメントに記載されているように、これは、ジョブのセキュリティを強化するために、コードを難読化するための不完全な試みである可能性があります...この目的のために、gets演算子:#if (0 <- 1)またはappromixator#if (1 ==~ 1)
63
chqrlie

(1 > 1)は読者へのコメントとして機能すると思います。スマイリーか他の絵文字です! :-)

(0>0)などを書くことも可能だったでしょう。

1
jotik