所以我定义了这个宏
#define TEST_CHECK(cond) check(cond,__FILE__,__LINE__,"%s",#cond)
实施
check(...)
作为:
int check(int cond, const char* file, const char* line, const char* fmt, ...){
// ...
if(cond){printf("test passed");}
else{ printf("test failed");}
// ...
}
TEST_CHECK(max(1,2)==1);
测试失败
TEST_CHECK(max(-2,-3)==-2);
但是现在我想打印预期的和观察到的结果,而不是只打印失败的文本。
TEST_CHECK(max(2,3),3);
测试失败:预期为3,但得到2
我可以将我的函数更改为
check(int expected, int observed ...)
这会奏效的。但在这种情况下,我只适合整数验证。我还想让这个函数对double、float、bool、char、char[]、int[]、…)有用。
我怎样才能解决这个问题?