OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8714|回复: 3

函数参数传递错误的疑问,求解

[复制链接]

67

主题

151

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2011-11-15
在线时间
4 小时
发表于 2012-4-24 16:37:27 | 显示全部楼层 |阅读模式
定义一个函数 void test(IDINT8U TpmNum, IDINT8U ChVal, IDINT16U ChalNum);
并在程序中进行调用。结果通过设置断点看到最后一个参数的值总是传递错误,和我调用时的实参不同。很郁闷。后来同事说可能是字节对齐的问题,就做了尝试。将函数改为了void test(IDINT16U TpmNum, IDINT16U ChVal, IDINT16U ChalNum);再次尝试,就OK啦!真是摸不着头脑啊。到底是怎么回事?为什么会出现这样的情况?谁能解释一下?怎样避免这样的问题再次发生?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-4-24 17:12:05 | 显示全部楼层
回复【楼主位】teclimber:
---------------------------------
这个你自己看你的传输参数的范围了。
你u8传u16的数据肯定不行的。
u16可以传u8。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

67

主题

151

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2011-11-15
在线时间
4 小时
 楼主| 发表于 2012-4-24 17:18:38 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
肯定不是这个问题,如果是这样的话,u16传u8也只是将数据截断了。现在我的情况却很诡异。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-4-24 17:21:23 | 显示全部楼层
jtag仿真的时候,有时候是很怪异的。
建议用printf看看。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 17:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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