c/c++ 可变参数在函数中的传递

c/c++ 可变参数在函数中的传递
@note: 只在windows中测试,未在linux上跑过
方法一: 通过宏传递
例如
void myprintf( const  char* format, );

3 #ifndef PASS_ARGS
#define PASS_ARGS(_fmt,) \
5   myprintf(fmt,__VA_ARGS__)
#endif

这种方式最简单最直接,但不利于函数的封装调用。

方法二: 通过函数传递
 2 
 3  void myprintf( const  char* fmt, )
 4 {
 5     va_list args;
 6     va_start(args, fmt);
 7     myprintf_internal(fmt, args);
 8     va_end(args);
 9 }
这种方法可以在函数内传递 va_list

至于 myprintf(const char*, ...) 传给 myprintf_internal(const char*, ...)这种方式,貌似只能通过循环解析出实参个数和内容,再传递给下一个函数,感觉上这样做可能会存在性能损耗

你可能感兴趣的:(c/c++ 可变参数在函数中的传递)