私の質問を正確にするために、変数++として受け入れ、別の変数でペーストするマクロを作成したいと思います。コードでは:(C/C++)インクリメント演算子を受け入れるマクロを作成する方法
#define MYMACRO(A, OP) /* .... */
と私はソースファイルに
MYMACRO(this->var, ++)
を書く場合、私は#のようにマクロを定義しようとしていた場合、その後、プリプロセッサは、コード内で
this->var++;
を貼り付ける必要があります#OPの場合、次のエラーが発生します。
pasting "++" and "var" does not give a valid preprocessing token
私は何をしようとしているのですか?答え
あなたのマクロは意味がありません。 –
CまたはC++を使用していますか? C++ではテンプレート関数を作ることを提案します。 – NathanOliver
'## 'は、2つのトークンを単一のトークンに貼り付けるために使用されます。 'MYMACRO(foo、bar)'は変数foobarになります。しかし、 'this-> var ++'は複数のトークンなので、それらを一緒に貼り付けることはできません。テキストレベルでは機能しませんので、単に物事を互いに並べて再解析するだけではありません。 – Barmar