我有成千上萬的功能包裝的其內部竟如同執行類似的邏輯:可能用宏抽象這個邏輯嗎?
// a, b, ... are variable length parameters of different type
void API_Wrapper(hHandle, a, b, ..)
{
if (hHandle)
return remote_API(hHandle, a, b, ..);
else
return API(a, b, ..);
}
我想用宏重用的if-else邏輯,所以我可以簡單地實現這樣的功能:
void API_Wrapper(hHandle, a, b, ..)
{
API_CALL(api_name, hHandle, a, b, ..); // API_CALL is a macro
}
我沒有想出一個好方法。 (注意:我可以通過...和__va_args__
解決,但是我們目前使用的編譯器不支持此擴展)
任何人都遇到過同樣的問題和任何想法?
你正在使用哪種編譯器? – kennytm 2010-08-13 09:47:47
你可以做你的包裝的兩個示例實例,所以我們可以看到它是如何「泛化」? – GManNickG 2010-08-13 09:48:19
你使用可變參數嗎? – Sjoerd 2010-08-13 09:58:22