2011-12-24 7 views
1

このコード:C++マクロ - 「パラメータ」次の単語の代わりに、(のように渡す)

#define DEREF(ptr) (*ptr) 

MyClass *pClass = new MyClass; 
DEREF(pClass).foo(); // equivalent of (*pClass).foo() or simply pClass->foo() 

は、私が代わりに括弧文のマクロを次の単語としてPTRパラメータを受け入れること#defineマクロ設定できます、私は次の操作を行うことができますように?:

DEREF pClass.foo(); 
+1

なぜマクロを使用するのですか? ' - >'の何が間違っていますか? –

+0

これは単なる例であり、あまり実用的ではありませんが、私の要点を明確に説明するために使用されています – dtech

答えて

4

いいえ、Cマクロのみ括弧内のパラメータを受け取ることができます '(')

4

ことができますマクロの後に続く単語としてptrパラメータを受け入れるように#defineマクロを設定します。

いいえ、C++コンパイラに渡す前にコードを変換するカスタムコードプリプロセッサを書くことはできます。これは実際に単純で実用的ではありませんが、実行することができます。 mocqt 4はこのように動作します。カスタムキーワードをスキャンし、コンパイラが受け入れることができるC++ステートメントで置き換えます。これにより、Qt 4は「信号/スロット」メカニズムを実装できます。

関連する問題