c - IAR 中的错误函数指针
问题描述
我正在使用 IAR,但出现以下错误:
Error[Pe513]: a value of type "void *" cannot be assigned to an entity of type "void (*)(void)"
下面是产生错误的代码:
uint32_t resethandler_adress = (volatile uint32_t)(FLASH_SECTOR2_BASE_ADRESSE + 4);
void (*app_reset_handler)(void);
app_reset_handler = (void*)resethandler_adress;
解决方案
如错误所述, avoid (*)(void)
与 a 不同void*
。解决方案是将整数转换为适当的类型。这可以直接完成;目前尚不清楚为什么将其转换为uint32_t
thenvoid*
或为什么您可能声明一个文字常量volatile
。
typedef void (*tResetHandlerFn)(void);
tResetHandlerFn app_reset_handler = (tResetHandlerFn)(FLASH_SECTOR2_BASE_ADDRESS + 4) ;
推荐阅读
- c# - 如何将图像从 Android 传递到我的 API 并将其保存在文件夹中?
- javascript - 将克隆触发器img复制到另一个元素jquery
- c# - C#如何做一个动作队列,其中动作有不同的参数
- angular - 如何仅在垫表的几行上显示编辑图标
- .net-core - Github Action DotNetCore sln 和项目在同一个文件夹中
- python - AttributeError:“str”对象没有“包含”属性
- angular - AWS Codepipeline 使用 --delete 标志部署到 S3
- android - 将两个数据类绑定到一个片段 - Android Kotlin
- algorithm - 查找 XOR 和为零的数组数量
- google-bigquery - 特殊组成员时的 BigQuery 数据集访问