在我创建了一个C函数作为回调传递给另一个库的情况下,我遇到了一个问题,所以它使用回调表示法。这是在使用VS2015。
VOID回调TheCallback(void)
我正在使用unity和cmock对一些代码进行单元测试,并且我正在尝试模拟回调。
因此,当cmock脚本创建所有mock (mock头文件)时,它会创建如下代码行:
void TheCallback_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line,VOID CALLBACK cmock_to_return);
(注意其中的回调一词)
当我编译的时候,我会得到这样的警告和错误:
警告C4229:使用的时间错误:忽略数据上的修饰符
错误返回:‘cmock_to_C2182’:非法使用类型'void‘
这似乎与卡在中间的回调有关。
关于如何将其声明为回调而不让VS2015抱怨ignore and return模拟的函数原型中的类型,有什么想法吗?
我在想,在单元测试时,是否需要以某种方式取消定义回调,甚至不确定是否可以
任何想法都会很棒..谢谢。
发布于 2018-01-19 05:27:38
为此,可以将回调添加到"c ++调用约定“列表中。
:cmock:
:c_calling_conventions:
- CALLBACK或者在cmock_config.rb中,添加回调::
:c_calling_conventions => ['__stdcall', '__cdecl', '__fastcall', 'CALLBACK'],https://stackoverflow.com/questions/48287885
复制相似问题