首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌入式单元测试中的模拟错误“重载函数的地址与所需类型'void()‘不匹配

嵌入式单元测试中的模拟错误“重载函数的地址与所需类型'void()‘不匹配
EN

Stack Overflow用户
提问于 2020-11-13 12:43:52
回答 1查看 249关注 0票数 0

我正在为一个嵌入式C项目工作,我目前正在为该项目编写单元测试。我使用的是fff模拟框架,它本质上创建了假函数调用,这些函数调用应该重载特定于硬件的调用。

当我创建一个“假函数”时,我会得到一个错误,说明

重载函数的

地址与所需类型'void()‘不匹配

每次我试图制造假的时候都会发生这种事。我主要是一个嵌入式C程序员,并且只使用C++的元素来进行单元测试。我真的不明白这条信息在告诉我什么,也不明白为什么它是个问题。如果有人能提供任何见解,我将非常感激。

有关代码如下所示。该错误在函数名上突出显示: xTaskCreate、HAL_TIM_Base_Init和HAL_TIM_ConfigClockSource。

代码语言:javascript
复制
#include <TinyEmbeddedTest.h>
#include <stdio.h>
#include "stm32f1xx_hal.h"
#include "FreeRTOS.h"
#include "task.h"
#include "fff.h"

#include "heater.c"  //source file being tested

DEFINE_FFF_GLOBALS;

FAKE_VALUE_FUNC(BaseType_t, xTaskCreate, TaskFunction_t, char *, configSTACK_DEPTH_TYPE, void *, UBaseType_t, TaskHandle_t *);
FAKE_VALUE_FUNC(HAL_StatusTypeDef, HAL_TIM_Base_Init, TIM_HandleTypeDef);
FAKE_VALUE_FUNC(HAL_StatusTypeDef, HAL_TIM_ConfigClockSource, TIM_HandleTypeDef, TIM_ClockConfigTypeDef*);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-14 08:22:55

由于您的错误与重载有关,这意味着您试图对同一个函数使用多个定义。我建议您确保这些模拟声明(也是定义)不会重新定义问题函数的原始定义。因此,例如,如果您在模拟一个函数int func(void),那么您就不能仅仅添加一个模拟声明FAKE_VALUE_FUNC(int,func)。您需要在原始函数实现之前添加weak属性,或者用函数指针替换原始函数实现。在我之前就类似问题给出的两个答案中,您可以更广泛地阅读到关于它的更多内容:

  1. https://stackoverflow.com/a/65814588/4441211
  2. https://stackoverflow.com/a/65814339/4441211
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64821121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档