1、c/c++程序中,经常会调用系统函数进行处理。编写单元测试时,又该怎样模拟系统函数调用呢?在特定的输入情况下输出不同的结果。首先,我们以malloc函数调用作为例子讲解:
2、一种方式,使用c语言中undef宏定义取消系统函数标识符,并且自定义我们的内存申请函数。我们看具体实例:
3、对于要模拟的系统函数,我们可以在头文件中首先unde酆璁冻嘌f,在重新define,这样就能使用我们自己定义的系统函数菱诎逭幂方法。这种方法也可以用于普通的开发中,比如内存泄漏问题,我们可以实现自己的内存管理相关函数。
4、第二种方法,使用编译器命令帮助我们转换系统函数调用。我们看具体实例如下:
5、gcc编译器有很多强大的功能,使用gcc编译命令中-Wl,-wrap命令,可以在调用系统函数时,实际调用到我们自己定义的函数。首先,自定义函数原型声明与系统函数声明一致,并且自定义函数名为__wrap_开头。
6、然后编译程序时,gcc选项中加上-Wl,-wrap=malloc。如果定义了其他的系统函数,则相应修改wrap编译选项。