找回密码
 立即注册
楼主: 王增

15F2K60S2单片机,sizeof计算结构体长度和实际对应不上

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-4-18 12:03:11 | 显示全部楼层
另外%x是十六进制打印噢,0x13H == 19.你这个EventSource定义是不是1字节?
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-29 08:53:52
已绑定手机

8

主题

47

回帖

144

积分

注册会员

积分
144
发表于 2025-4-18 13:06:11 | 显示全部楼层
看一下这两个图片
截图202504181305099286.jpg
截图202504181305149049.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-29 08:53:52
已绑定手机

8

主题

47

回帖

144

积分

注册会员

积分
144
发表于 2025-4-18 13:06:44 | 显示全部楼层
erci*** 发表于 2025-4-18 11:58
是不是漏了这个

看一下我刚刚上传的图片
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-29 08:53:52
已绑定手机

8

主题

47

回帖

144

积分

注册会员

积分
144
发表于 2025-4-18 13:07:23 | 显示全部楼层
erci*** 发表于 2025-4-18 11:58
是不是漏了这个

没有漏,eventUsing.source,能访问
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-29 08:53:52
已绑定手机

8

主题

47

回帖

144

积分

注册会员

积分
144
发表于 2025-4-18 13:08:15 | 显示全部楼层
erci*** 发表于 2025-4-18 12:03
另外%x是十六进制打印噢,0x13H == 19.你这个EventSource定义是不是1字节?

// 事件源
typedef enum
{
    EVENT_SOURCE_UART1 = 0x01,    // 串口1
    EVENT_SOURCE_UART2 = 0x02,    // 串口2
    EVENT_SOURCE_UART3 = 0x03,    // 串口3
    EVENT_SOURCE_UART4 = 0x04,    // 串口4
    EVENT_SOURCE_UART5 = 0x05,    // 串口5
    EVENT_SOURCE_UART6 = 0x06,    // 串口6
    EVENT_SOURCE_UART7 = 0x07,    // 串口7
    EVENT_SOURCE_UART8 = 0x08,    // 串口8
    EVENT_SOURCE_UART9 = 0x09,    // 串口9
    EVENT_SOURCE_UART10 = 0x0A,   // 串口10
    EVENT_SOURCE_CAN1 = 0x11,     // CAN1总线
    EVENT_SOURCE_CAN2 = 0x12,     // CAN2总线
    EVENT_SOURCE_ETHERNET = 0x21, // 以太网
    EVENT_SOURCE_TIMER = 0x31,    // 定时器
    EVENT_SOURCE_SYSTEM = 0x41,   // 系统内部
    EVENT_SOURCE_USER = 0x51,     // 用户触发
    EVENT_SOURCE_SENSOR = 0x61,   // 传感器
} EventSource;
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-29 08:53:52
已绑定手机

8

主题

47

回帖

144

积分

注册会员

积分
144
发表于 2025-4-18 13:20:05 | 显示全部楼层
是不是这个编译选项,需要修改呢???
截图202504181319433769.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-29 08:53:52
已绑定手机

8

主题

47

回帖

144

积分

注册会员

积分
144
发表于 2025-4-18 13:40:19 | 显示全部楼层
王*** 发表于 2025-4-18 13:20
是不是这个编译选项,需要修改呢???

选择,1: Dead code elimination(死代码消除)进行了测试,现象和选择9: Common Block Subroutines(公共块子程序)一致,没有区别

点评

上面发了原因,你用%x打印的结构体总长,13,不是十进制!!! 0x13H == 19  详情 回复 发表于 2025-4-18 13:58
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-4-18 13:58:10 | 显示全部楼层
王*** 发表于 2025-4-18 13:40
选择,1: Dead code elimination(死代码消除)进行了测试,现象和选择9: Common Block Subroutines(公 ...

上面发了原因,你用%x打印的结构体总长,13,不是十进制!!!
0x13H == 19
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-29 08:53:52
已绑定手机

8

主题

47

回帖

144

积分

注册会员

积分
144
发表于 2025-4-18 13:59:50 | 显示全部楼层
erci*** 发表于 2025-4-18 13:58
上面发了原因,你用%x打印的结构体总长,13,不是十进制!!!
0x13H == 19

是我也发现了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-29 08:53:52
已绑定手机

8

主题

47

回帖

144

积分

注册会员

积分
144
发表于 2025-4-18 14:10:08 | 显示全部楼层
char a = 1;
int b = 12365;
long c = 0x7FFFFFFF;

unsigned char x = 'A';
unsigned int y = 54321;
unsigned long z = 0x4A6F6E00;

float f = 10.0;
float g = 22.95;

char buf[] = "Test String";
char *p = buf;

printf("char %bd int %d long %ld\n",a,b,c); 有符号,10进制
printf("uchar %bu uint %u ulong %lu\n",x,y,z);无符号,10进制
printf("xchar %bx xint %x xlong %lx\n",x,y,z);无符号,8进制
printf("String %s is at address %p\n",buf,p);
printf("%f != %g\n", f, g);
printf("%*f != %*g\n", (int)5, f, (int)8, g);

C51单片机打印注意
char 打印前面增加b
int
long 打印前面增加l
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 20:06 , Processed in 0.248377 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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