找回密码
 立即注册
查看: 240|回复: 10

Keill中 #define 定义long型问题

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-02-01 17:17:26

11

主题

28

回帖

363

积分

中级会员

积分
363
发表于 2026-1-22 18:18:21 | 显示全部楼层 |阅读模式
#define num 0x1ff00

...
typedef unsigned long mm;


if(mm>num)
  { ...  }
else
  { ... }
用define 定义了num常量, 在if(mm>num) 比较中,用反汇编看num 的值 屏蔽了高位的 1 变成0xff00 这是什么原因.

后来用以下方法勉强解决
#define num 0x1ff00



...
typedef unsigned long mm;

typedef unsigned long k;

k=num;
if(mm>k)
  { ...  }
else
  { ... }


以上是哪里出了问题,望高手指教
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-02-01 17:17:26

11

主题

28

回帖

363

积分

中级会员

积分
363
发表于 2026-1-22 18:23:35 | 显示全部楼层
以上发的帖写错了,在此更正
#define num 0x1ff00

...
typedef unsigned long mm;


if(mm>num)
  { ...  }
else
  { ... }
用define 定义了num常量, 在if(mm>num) 比较中,用反汇编看num 的值 变成0xffff ff00(负数) 这是什么原因.

后来用以下方法勉强解决
#define num 0x1ff00



...
typedef unsigned long mm;

typedef unsigned long k;

k=num;
if(mm>k)  反汇编看k是0x1ff00
  { ...  }
else
  { ... }


以上是哪里出了问题,望高手指教
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:483
  • 最近打卡:2026-03-23 08:55:58
已绑定手机

104

主题

4195

回帖

9307

积分

荣誉版主

无情的代码机器

积分
9307
发表于 2026-1-22 19:32:33 | 显示全部楼层
#define num 0x1ff00ul
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:813
  • 最近打卡:2026-03-23 08:19:26
已绑定手机

25

主题

630

回帖

3959

积分

论坛元老

积分
3959
发表于 2026-1-22 20:28:26 | 显示全部楼层
typedef好像是定义类型吧,
类型能跟常量比大小吗?没看懂
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:724
  • 最近打卡:2026-03-18 07:56:47
已绑定手机

97

主题

7244

回帖

1万

积分

超级版主

积分
13791
发表于 2026-1-22 22:12:36 | 显示全部楼层
不要用typedef
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:645
  • 最近打卡:2026-03-23 15:27:18

33

主题

2912

回帖

6555

积分

论坛元老

积分
6555
发表于 2026-1-23 10:39:57 | 显示全部楼层
同样没看懂,,,你这个是定义了变量么?typedef unsigned long mm;  我怎么感觉这个是指定了一个数据类型。。
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-02-01 17:17:26

11

主题

28

回帖

363

积分

中级会员

积分
363
发表于 2026-1-23 14:59:20 | 显示全部楼层
_奶*** 发表于 2026-1-23 10:39
同样没看懂,,,你这个是定义了变量么?typedef unsigned long mm;  我怎么感觉这个是指定了一个数据类型 ...

是定义了一个变量 mm , 然后变量的值和常量比较
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:645
  • 最近打卡:2026-03-23 15:27:18

33

主题

2912

回帖

6555

积分

论坛元老

积分
6555
发表于 2026-1-23 15:05:11 | 显示全部楼层
神清*** 发表于 2026-1-23 14:59
是定义了一个变量 mm , 然后变量的值和常量比较

没看到你在那里定义的  变量   0.0
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-02-01 17:17:26

11

主题

28

回帖

363

积分

中级会员

积分
363
发表于 2026-1-23 15:26:58 | 显示全部楼层
erci*** 发表于 2026-1-22 19:32
#define num 0x1ff00ul

你的方法能解决问题,谢谢
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:777
  • 最近打卡:2026-03-23 09:53:35
已绑定手机

33

主题

381

回帖

3336

积分

论坛元老

机长

积分
3336
发表于 2026-1-23 15:27:56 | 显示全部楼层
神清*** 发表于 2026-1-23 14:59
是定义了一个变量 mm , 然后变量的值和常量比较

但是,你这个写法我看了很多遍,mm不是变量,明明是个类型啊,是unsigned long类型的别名。
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-23 23:08 , Processed in 0.120402 second(s), 86 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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