2-3-1 用于代码跟踪的宏

2.3.1 用于代码跟踪的宏

1.TRACE宏

本宏用于打印正在运行的行代码。

#define TRACE(ARG) cout<<#ARG<<endl; ARG

例如:

TRACE(a.hello();)		//打印这句话,并执行这句话

2.注意问题

下面的代码使用TRACE宏会出现问题:

TRACE(for(int i = 0;i < 100;i++))
TRACE( cout<<i<<endl;)

预处理后变为,与原意不符:

cout<<"for(int i = 0;i < 100;i++)"<<endl;
for(int i = 0;i < 100;i++)
cout<<"cout<<i<<endl;"<<endl;
cout<<i<<endl;

3.D()宏变种

本宏用于输出这句话和对应的值,副作用是执行了这句话。

#define D(a) cout << #a "=[" << a << "]" <<endl;