[英]Is it possible to define a c++ wrapper function for a macro with variadic parameters?
我想提出一個c ++包裝函數,該函數完全包裝TraceLoggingWrite宏。 TraceLoggingWrite
是具有可變參數的宏。 我嘗試了以下代碼段,但是會遇到編譯錯誤,因為似乎語法要求包裝函數接受va_list參數。 如果是這樣,還有另一種方法可以做到這一點嗎?
void WrapperFunction(String Name, ...)
{
va_list args;
va_start(args, Name);
TraceLoggingWrite(gProvider,
Name,
TraceLoggingInt32(32, "Test"),
args);
va_end(args);
}
您可以考慮使用參數pack :
template<typename... Ts>
void WrapperFunction(String Name, Ts... args)
{
TraceLoggingWrite(gProvider,
Name,
TraceLoggingInt32(32, "Test"),
args...);
}
但是,因為TraceLoggingWrite
是一個可變參數宏 ,所以在某些情況下參數包不起作用。 一種替代方法是創建另一個也是可變的宏,如下所示:
#define WrapperMacro(eventName, ...) TraceLoggingWrite(gProvider, eventName, __VA_ARGS__)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.