假设我有两个文件夹implem_1
和implem_2
,每个文件夹包含一个文件f.c
,它以两种不同的方式实现相同的功能 f 和相应的标题f.h
。函数 f 采用一个参数 x 。我想比较两个文件夹中两个函数对许多 x 值的评估,以测试实现是否匹配。
代码看起来像这样,但是头文件没有定义f_1
和f_2
,而是定义f
两次。
#include "implem_1/f.h" /* include first implem f_1 of f */
#include "implem_2/f.h" /* include second implem f_2 of f */
for(x=0; x<1000000; ++x) {
if(f_1(x)!=f_2(x)) {
printf("Implementations do not match\n");
break;
}
}
如何在不修改implem_1
和implem_2
两个文件夹中的任何内容的情况下实现此目的?
答案 0 :(得分:6)
implem_1/f.c
编译-Df=f_1
。implem_2/f.c
编译-Df=f_2
。将驱动程序文件更改为:
#define f f_1
#include "implem_1/f.h"
#undef f
#define f f_2
#include "implem_2/f.h" /* include second implem f_2 of f */
for(x=0; x<1000000; ++x) {
if(f_1(x)!=f_2(x)) {
printf("Implementations do not match\n");
break;
}
}