You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用fff.h测试框架报错:非结构体/联合体中请求‘call_count’成员

FFF框架编译错误:访问假函数call_count成员失败的解决方法
  • 核心问题:你混淆了假函数的函数入口和它对应的状态结构体。FAKE_VOID_FUNC宏会生成两个关键部分:

    1. 名为test_task_set_state_hook的假函数实现(用于替换原函数)
    2. 名为test_task_set_state_hook_fake的结构体实例,才包含call_count、arg0_val等状态属性

    你直接访问test_task_set_state_hook.call_count,但test_task_set_state_hook是函数标识符,不是结构体,所以编译器报错。

  • 解决步骤:

    1. 修改断言代码,改为访问结构体实例的成员:
      TEST_ASSERT_EQUAL_INT(test_task_set_state_hook_fake.call_count, 0);
      
    2. 额外检查确保以下步骤正确:
      • 在使用FAKE_VOID_FUNC之前,已经正确声明假函数的原型,比如:
        void test_task_set_state_hook(/* 填写函数的参数类型,例如int state */);
        
      • 代码中已包含FFF的头文件:#include "fff.h"
      • 在测试用例初始化阶段(比如setUp函数)调用重置宏,确保假函数状态每次测试前清零:
        void setUp(void) {
            RESET_FAKE(test_task_set_state_hook);
        }
        

内容的提问来源于stack exchange,提问作者fearless_fool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:19:53