5

タイトルが示すように、使用の違いは何だろうと思っていました

#if
   DoWork();
#else
   DoAnotherWork();
#endif

if (debug)
   DoWork();
else
   DoAnotherWork();
4

3 に答える 3

11
if (debug)
    DoWork();
else
    DoAnotherWork();

上記のコードがコンパイルされ、実行時に条件がチェックされます。

#if
    DoWork();
#else
    DoAnotherWork();
#endif

これらのステートメントは、コンパイル時にチェックされます。

したがって、#if条件が真の場合、DoWork(); コンパイルされるか、そうでなければDoAnotherWork(); コンパイルされます。前の例のように、ifステートメントを含むすべてのコードがコンパイルされます。

プリプロセッサディレクティブでこれを読んでください

プリプロセッサディレクティブ

于 2013-02-23T00:07:14.137 に答える
9

最初はPreprocessor Directiveで、2 番目はLogical statementです。

于 2013-02-23T00:04:46.190 に答える
6

最初のバージョンはプリプロセッサディレクティブを使用します。これらは、コンパイラ自体が特定のステートメントのみをコンパイルするための命令です。結果の実行可能ファイルには、コンパイルされたステートメントのみが含まれます。したがって、条件はコンパイル時に評価できるものでなければなりません。

2番目のバージョンは実行時に評価されます。コンパイラーは、条件を評価するためのロジックだけでなく、すべてのステートメントをコンパイルしifます。すべてのステートメントは、結果の実行可能ファイルに含まれます。また、実際に実行されるステートメントは、コードの実行時に決定されます。

于 2013-02-23T00:06:45.710 に答える