美文网首页
c/c++中的变参数使用示例

c/c++中的变参数使用示例

作者: 牛奶言兼 | 来源:发表于2022-08-28 15:42 被阅读0次

在上一篇初探TCP链路的示例代码中,一开始没搞定日志的变参数传递问题,采用了不够优雅的方式进行处理,代码为:

#define LOG(fmt, ...) printf("file:%s, line:%d  ", __FILE__, __LINE__); \
    printf(fmt, ##__VA_ARGS__); printf("%s", "\n");

参考:

替换文本宏 - cppreference.com
文本替换宏 - cppreference.com

c变参数宏的说明

于是,优雅的日志简单封装为:

void my_log(const char* file, int line, const char* fmt, ...) {
    va_list args;
    printf("file:%s, line:%d  ", file, line);

    va_start(args, fmt);
    vprintf(fmt, args);  // 函数定义int vprintf(const char * __restrict, va_list);
    va_end(args);

    printf("%s", "\n");
}

#define LOG(fmt, ...) my_log(__FILE__, __LINE__, fmt, ##__VA_ARGS__);

#__VA_ARGS__与##__VA_ARGS__的区别

clang

待补充

gcc

待补充

相关文章

网友评论

      本文标题:c/c++中的变参数使用示例

      本文链接:https://www.haomeiwen.com/subject/dhtknrtx.html