隐式传递参数

时间:2019-07-02 18:58:24

标签: c

我正在开发一个自定义的单元测试框架,该框架不显示失败测试的文件名/行号。我知道我可以要求它们作为report_results函数的参数,但这似乎很多文本。

有没有一种方法可以使__FILE____LINE__始终随函数传递,即使我在调用函数时不传递它们也是如此?

您可以在C ++中执行以下操作:

void func(char *file=__FILE__, int line=__LINE__)(int more_args) {}

1 个答案:

答案 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中使用可变参数宏作为前端来支持可变参数函数。