找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

51单片机编程使用函数指针 Keil报错parameters do not fit within registers

查看数: 3828 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-6-25 22:40

正文摘要:

// 定义函数指针 typedef (*Calculator) (int num1, int num2); // 加法 static int AddOption(int num1, int num2) {     return num1 + num2; } // 减法 static int SubOption(int num1, int num2) ...

回复

ID:217889 发表于 2023-6-26 23:06
Longan.Wang 发表于 2023-6-26 14:09
你定义函数指针
typedef (*Calculator) (int num1, int num2);没有返回类型
你定义的函数实体又有返回类 ...

不好意思 这里手打的代码漏掉了 实际代码中是有的
ID:217889 发表于 2023-6-26 22:57
LaoYuTou 发表于 2023-6-26 08:23
测试没问题,是不是调用问题,看看怎么调用的。

上面只是给了简单的框架 实际代码对类型做了重定义
typedef unsigned int uint16_t
typedef unsigned long uint32_t

实际测试中发现定义函数指针时变量类型使用uint16_t不会报这个错 但是用uint32_t时会报错
不清楚原因在哪里
ID:77589 发表于 2023-6-26 14:09
你定义函数指针
typedef (*Calculator) (int num1, int num2);没有返回类型
你定义的函数实体又有返回类型
ID:526108 发表于 2023-6-26 09:35
直接声明
code int(code*Calculator[]) (int, int)={
AddOption,
SubOption,
MulOption,
DivOption
};
return Calculator[opt](num1,num2);
ID:1080935 发表于 2023-6-26 08:23
测试没问题,是不是调用问题,看看怎么调用的。
ID:908826 发表于 2023-6-26 08:03

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表