我已經定義了一個類似對象的宏和一個類似函數的宏(從this問題)。爲什麼我無法將類似對象的宏粘貼到函數中?
#define SYSTEM windows
#define CALL(function, ...) (function)(__VA_ARGS__)
根據這個定義,CALL(foo, arg1, arg2)
變成foo(arg1, arg2)
。
我想要CALL(foo, args)
變成x__foo(args)
,x
是SYSTEM
定義的任何值。
我曾嘗試:
#define CALL(function, ...) SYSTEM##__function(__VA_ARGS__)
#define CALL(function, ...) (SYSTEM)##__##(function)(__VA_ARGS__)
#define CALL(function, ...) ((SYSTEM)##__##(function)(__VA_ARGS__)
他們都導致編譯器錯誤。如何連接SYSTEM
,__
和function
的值?