怎么让VC6.0支持可变参数宏定义?

本文介绍了一种利用C++标准库中的va_list类型来实现类似printf风格的动态参数打印功能的方法。通过定义CPrtLogFunc类并使用__FILE__和__LINE__宏记录文件名及行号,实现了在指定格式下输出带文件位置信息的日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用不着重载()这样就行:

#include <stdarg.h> //包含va_list
#include <stdio.h> //包含vsprintf()
#include <string.h>

#define MyPrtLog CPrtLogFunc(__FILE__,__LINE__).out
class CPrtLogFunc 

public: 
    char * m_file; 
    int m_line; 

    CPrtLogFunc(char * file,int line) 
    { 
        m_file=file; 
        m_line=line; 
    }    
    void out(char * format,...) 
    {   
printf("In file %s line %d",m_file,m_line);
        va_list arg_ptr; 
va_start(arg_ptr, format); 
vprintf(format,arg_ptr); 
va_end(arg_ptr); 

}; 
void main()
{
   MyPrtLog("Error%d\n","错误");

}


转自:https://bbs.youkuaiyun.com/topics/260007879

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值