我遇到的问题是我创建了一个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,不确定我是否可以
任何想法都会很棒.. 谢谢。
答案 0 :(得分:0)
为此,您将CALLBACK添加到“c调用约定”列表中
:cmock:
:c_calling_conventions:
- CALLBACK
或在cmock_config.rb中,添加CALLBACK ::
:c_calling_conventions => ['__stdcall', '__cdecl', '__fastcall', 'CALLBACK'],