1

私は効果的なc++を読んでいます。項目2(#defineよりもconst、enum、inlineを優先)に関して、Scottは次のように述べています。#defineは言語の一部ではないかのように扱われることが多く、ソースコードがコンパイラ。

誰かがこれについての例を教えてもらえますか?ありがとう。

4

2 に答える 2

1

これはややあいまいなステートメントですが、正式にはプリプロセッサはコンパイルの別のフェーズであり、昔はプリプロセッサはコンパイラがコードを確認する前にその機能を実行する別のプログラムでした。ほとんどのコンパイラには、前処理のみを実行するオプションがあります。これは、一部のコードがどこで間違っているかを把握するのに役立つ場合があります。ただし、「あたかも」ルールでは、コンパイラは別のフェーズで前処理を行う必要はありません。それがそれをしたかのようにそれはただ同じ結果を生み出さなければなりません。

于 2012-11-15T16:28:13.253 に答える
0

非常に簡単な例を次に示します。

#define MAX_COUNT 256

プリプロセッサはMAX_COUNT、関連するスコープ内のすべての出現箇所256を、コンパイラに渡す前に置き換えます。

広い意味では、それをマクロと考えることができます。

#define FOO(a,b) a*b+a+b

に置き換えFOO(a,b)られますa*b+a+b

プリプロセッサの詳細については、このページを参照することもできます。

于 2012-11-15T16:26:49.437 に答える