「C++に適したオブジェクト指向のプリプロセッサ」という論文を読んでいました。計算マクロと構文マクロは何ですか
これは、マクロの3つの異なる種類について説明します。
- テキストマクロ。 //ほぼ同じC前処理プロセッサ
- 計算マクロ//テキストは計算結果として置き換えられます
- 構文マクロ。 //テキストは、言語的に一貫した構造を表す構文ツリーに置き換えられます。
最後の2つのタイプのマクロについて詳しく説明してください。 インライン関数とテンプレートは計算マクロの例ですが、どういう意味ですか?
「C++に適したオブジェクト指向のプリプロセッサ」という論文を読んでいました。計算マクロと構文マクロは何ですか
これは、マクロの3つの異なる種類について説明します。
最後の2つのタイプのマクロについて詳しく説明してください。 インライン関数とテンプレートは計算マクロの例ですが、どういう意味ですか?
WillinkさんとMuchnickの論文は、このようなさまざまなマクロタイプを要約したいIを参照してください1966年からオリジナルCheathamの論文を見て:
とした後、それは次のようにそれを正しくコンパイルするために必要な意味情報で注釈が付けられている間、私はノーC++内部の専門家だが、私は関数呼び出しとインスタンス化テンプレートのインライン化を前に構文木を操作する程度であることを前提としていたいですそれらの両方は、スキャンや解析中にはまだ分かっていないもの(型情報など、何かがインライン展開されるのが良いかどうか)を知っていることを前提としています。
2.コンパイル時にいくつかの計算が実行され、実行時に実行される結果の命令は結果のみを含むことを意味するように思えます。私はインライン関数が特にこれを表しているとは思いませんが、テンプレートのメタプログラミングはまさにこれを行います。また、C++ 11ではconstexpr
です。
私は3もテンプレートの使用によって表現できると思います。テンプレートは構文ツリーを表し、それをインスタンス化するには、汎用構文ツリーを取り、パラメータ化された未知ビットを埋め込み、結果の構文ツリーを使用する必要があります。
返事をいただきありがとうございます。私は数日前に論文を読みました。 –