C++自动打印进出函数的方法

调试的时候有个小需求,就是能自动打印程序执行过程中进出的函数名,以便定位问题。其实很好实现,利用类的构造和析构就可以实现。然后通过向类传入函数名作为打印信息,就可以自动打印进出的每个函数。

那么如何获取函数名呢?当然手动传是可以的,但是也太把程序员当搬砖的了。C++里面集成了一些宏,例如__FILE__,__LINE__,__DATE__,__TIME__等,相信很多同学都用过,获取函数自身名称,可以用__FUNCTION__。废话不多说,直接上demo:

定义一个打印函数名称的类:

class FuncPrint
{
public:
	FuncPrint(string func)
	{
		func_name = func;
		cout << "<<<<<<Enter function: " << func_name << endl;
	}
	
	~FuncPrint()
	{
		cout << ">>>>>>Exit function: " << func_name << endl;
	}
	
private:
	string func_name;
};

随便写两个函数测试一下:

void my_function_1(int arg)
{ 
	FuncPrint func_print(__FUNCTION__);
	
	cout << "Input argument is " << arg << endl;
	
}

void my_function_2(string arg)
{
	FuncPrint func_print(__FUNCTION__);
	
	cout << "Input argument is " << arg << endl;
	
}

int main()
{
	my_function_1(10);
	
	my_function_2("Hello World!");
	
	return 0;
}

输出结果:

成功在进入和退出函数的时候输出了函数名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值