0

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

无效回调回调(无效)

我正在使用 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,我什至不确定我是否可以

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

4

1 回答 1

1

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

:cmock:
    :c_calling_conventions:
        - CALLBACK

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

:c_calling_conventions       => ['__stdcall', '__cdecl', '__fastcall', 'CALLBACK'],
于 2018-01-18T21:27:37.613 回答