使用cmock模拟一个Windows CALLBACK

时间:2018-01-16 18:44:24

标签: unit-testing visual-studio-2015 callback cmock

我遇到的问题是我创建了一个C函数,它作为回调传递给另一个库,因此它使用CALLBACK表示法。这是使用VS2015。

VOID CALLBACK TheCallback(void)

我使用unity和cmock对一些代码进行单元测试,我试图模拟回调..

因此,当cmock脚本创建所有模拟(模拟头文件)时,它会创建如下所示的行:

void TheCallback_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line,VOID CALLBACK cmock_to_return);

(注意那里的CALLBACK一词)

当我编译时,我得到这样的警告和错误:

警告C4229:使用的时间错误:忽略数据上的修饰符

错误C2182:' cmock_to_return':非法使用类型' void'

这似乎与CALLBACK卡在中间有关。

关于如何将此声明为CALLBACK并且没有VS2015抱怨忽略和返回模拟的函数原型中的类型的任何想法?

我想知道我是否需要在单元测试时以某种方式取消定义CALLBACK,不确定我是否可以

任何想法都会很棒.. 谢谢。

1 个答案:

答案 0 :(得分:0)

为此,您将CALLBACK添加到“c调用约定”列表中

:cmock:
    :c_calling_conventions:
        - CALLBACK

或在cmock_config.rb中,添加CALLBACK ::

:c_calling_conventions       => ['__stdcall', '__cdecl', '__fastcall', 'CALLBACK'],