매크로를 확장하여 응용 프로그램에 사용되는 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