使用fff.h测试框架报错:非结构体/联合体中请求‘call_count’成员
FFF框架编译错误:访问假函数call_count成员失败的解决方法
核心问题:你混淆了假函数的函数入口和它对应的状态结构体。
FAKE_VOID_FUNC宏会生成两个关键部分:- 名为
test_task_set_state_hook的假函数实现(用于替换原函数) - 名为
test_task_set_state_hook_fake的结构体实例,才包含call_count、arg0_val等状态属性
你直接访问
test_task_set_state_hook.call_count,但test_task_set_state_hook是函数标识符,不是结构体,所以编译器报错。- 名为
解决步骤:
- 修改断言代码,改为访问结构体实例的成员:
TEST_ASSERT_EQUAL_INT(test_task_set_state_hook_fake.call_count, 0); - 额外检查确保以下步骤正确:
- 在使用
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
相关产品推荐
相关产品推荐

