我正在开发一个自定义单元测试框架,该框架不会显示失败测试的文件名/行号。我知道我可以要求它们作为函数的参数,report_results但这似乎很多文本。
有没有一种方法来让这个__FILE__和__LINE__总是与功能过去了,即使我没有通过他们,当我打电话了吗?
您可以在C ++中执行以下操作:
void func(char *file=__FILE__, int line=__LINE__)(int more_args) {}
Run Code Online (Sandbox Code Playgroud)
在代码中使用宏来调用基础函数
#define func(arg) real_func(__FILE__,__LINE__,arg)
Run Code Online (Sandbox Code Playgroud)
这里real_func是
void real_func(const char *file, int line, int arg);
Run Code Online (Sandbox Code Playgroud)
在您的代码中,当您调用时func(12),它将扩展为对的调用real_func,并带有实际的文件路径和行。您甚至可以在C99中使用可变参数宏作为前端来支持可变参数函数。