我正在开发一个自定义的单元测试框架,该框架不显示失败测试的文件名/行号。我知道我可以要求它们作为report_results
函数的参数,但这似乎很多文本。
有没有一种方法可以使__FILE__
和__LINE__
始终随函数传递,即使我在调用函数时不传递它们也是如此?
您可以在C ++中执行以下操作:
void func(char *file=__FILE__, int line=__LINE__)(int more_args) {}
答案 0 :(得分:6)
在代码中使用宏来调用基础函数
#define func(arg) real_func(__FILE__,__LINE__,arg)
real_func
在哪里
void real_func(const char *file, int line, int arg);
在您的代码中,当您调用func(12)
时,它将扩展为对real_func
的调用,并带有实际的文件路径和行。您甚至可以在C99中使用可变参数宏作为前端来支持可变参数函数。