![]() |
#2
lyj232011-06-05 20:35
|

#define test_(cond)\
do_test(cond,#cond,_FILE_,_LINE)
#define fail_(str)\ //这个"\"是什么意思,是写到下一行的提示吗?
do_fail(str,_FILE_,_LINE_) //_FILE_ _LINE_有什么特殊的意义吗?还是仅仅是个名字?
//……后面声明了这两个函数
class Test{
private:
//……
protected:
void do_test(bool cond,const string& lbl,const char* fname,long lineno);//用protected形式,是认为测试对象没有拷贝和赋值操作,所以通过这个原型声明来
void do_fail(const string& lbl,const char* fname,long lineno); //禁止这两种操作
//---------------------------------------------------------- 为什么声明为受保护的,就可以禁止这两种操作?
public:
//……
}
//后来定义了这两个函数
//……
do_test(cond,#cond,_FILE_,_LINE)
#define fail_(str)\ //这个"\"是什么意思,是写到下一行的提示吗?
do_fail(str,_FILE_,_LINE_) //_FILE_ _LINE_有什么特殊的意义吗?还是仅仅是个名字?
//……后面声明了这两个函数
class Test{
private:
//……
protected:
void do_test(bool cond,const string& lbl,const char* fname,long lineno);//用protected形式,是认为测试对象没有拷贝和赋值操作,所以通过这个原型声明来
void do_fail(const string& lbl,const char* fname,long lineno); //禁止这两种操作
//---------------------------------------------------------- 为什么声明为受保护的,就可以禁止这两种操作?
public:
//……
}
//后来定义了这两个函数
//……
我看书上的一个单元测试的例子,其中的Test.h文件中有几个问题。
唉,预处理没学好,可悲额。这个test_(cond)只有一个参数,怎么会通过这个宏能得到文件名和行号? //cond只是个bool的变量
得到文件名和行号就这样就可以得到还是里面又用了什么函数。。
(跪求高手,没能力解决的新手们不要自作聪明来乱讲误人子弟!)