2011-07-02 15 views
2

C/C++の場合、コンパイラがプログラムをコンパイルする前にプリプロセッサがマクロ処理を行うので、マクロ名はリテラルまたは絶対でなければならず、宣言されたマクロ名は許可されません。PHPマクロ定義はどのように解釈されますか?

PHPの場合、次のように宣言できます。DEFINE($ name、$ value); これは、インタプリタが最初に変数を解釈し、次にマクロが定義されていることを意味します。つまり、実行時マクロ処理と同じです。

これは実際には本当にマクロ処理なのでしょうか? 「define」のようなキーワードを導入する目的は何ですか?変更できない値を持つことはできますか?

マクロ処理があれば誰でも説明できますが、どのように動作するのでしょうか?

答えて

5

コンパイル時に定義される定数であり、完全を期すために、そこ:(定義使用して定数を定義とは対照的に

const MY_CONSTANT = 'something'; 

)、定数constキーワードのマストを使用して定義コンパイル時に定義されているため、トップレベルのスコープで宣言する必要があります。つまり、関数、ループ、if文の中で宣言することはできません。

From the PHP Manual

これは現在のPHPバージョン5.3用です。

+0

実際、私はconstを混ぜて定義し、defineがCマクロのように動作すると仮定しました。とにかく、リンクありがとうございました;) –

4

Define()は定数を宣言します。 PHPでは、Cのようなマクロを宣言することはできず、一般的には必要ありません。

詳細情報についてはphp website

1

PHPはインタプリタ言語で優秀を試してみてください - 私たちはPHPSケースでのコンパイルについて話すことはできません。 DEFINEは、定数を定義するために使用されている - PI例えば

+0

http://php.net/manual/en/function.pi.php、確実にインタープリタ言語もコンパイルされます。 – hakre

関連する問題