私は自分のアプリケーションに使用するtypedefを構築するためにマクロを展開する必要があります。マクロは単純なtypedefを構築します。私が持っている質問は何ですか?__VA_ARGS__
(つまり、引数をもっと遠くまで失っていますか?)多数のマクロに渡されたときの動作と、それが正しい結果を出すために別のスキャンが必要なときを知る方法です。高次のマクロを作成するときの問題DERIVED
マクロ。 Cプリプロセッサ(MSVC++、MSVC)のマクロを正しく展開する方法は?
#define DERIVED0() rtti::impl::BaseTypedefList<rtti::impl::null>
#define DERIVED1(T1) rtti::impl::BaseTypedefList<T1, DERIVED0()>
#define DERIVED2(T1, T2) rtti::impl::BaseTypedefList<T1, DERIVED1(T2)>
#define BUILD(count, ...) DERIVED##count(__VA_ARGS__)
// inside the classes
#define CLASS_BODY(count, ...) typedef BUILD(count, __VA_ARGS__) BaseClassList;
// example usages
CLASS_BODY(0) // WORKS
CLASS_BODY(1, MeshRenderer) // WORKS
CLASS_BODY(2, Renderer, Object) // ERROR
MSVSを使用していますか? –
@HWaltersはい私はMSVSを使用しています – Matthew