比较同一函数的两个C实现
假设我有两个文件夹,比较同一函数的两个C实现,c,C,假设我有两个文件夹,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 i
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/f.h”/*包括f的第一个implem f_1*/
#包括“implem_2/f.h”/*包括第二个implem f_2/f.h*/
对于(x=0;x
用一个预处理器宏编译implem_1/f.c
用一个预处理器宏编译implem_2/f.c
将驱动程序文件更改为:
#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;
}
}
#定义f#u 1
#包括“implem_1/f.h”
#未定义f
#定义f_2
#包括“implem_2/f.h”/*包括第二个implem f_2/f.h*/
对于(x=0;xsc不提供名称空间,一个更简单的实现可能是将f(x)
输出到两个不同的文本文件并将它们区分开来。