美文网首页
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