标题: c51单片机函数入参(形参)问题 [打印本页]

作者: 万家灯火51    时间: 2024-8-15 14:06
标题: c51单片机函数入参(形参)问题
函数形参是通过寄存器传递的,这里有个问题,如 void deal(num){...},这个形参num我并没有指明它是bit int char等类型,编译时keil编译器它并不会报错,并且调用时,实参我用bit型 char型 int型,都可以。有谁能深入解释下这究竟咋回事不?

作者: 188610329    时间: 2024-8-15 17:38
一个合格的程序,需要有很多“默认”的定义。
以keil4 PK51 为例,你没有定义的前提下,默认是通过 R6,R7 寄存器传参,你可以理解为short 类型,虽然不太确切。 即便你给一个 char 或者 bit 它也是强制转成 short 格式(实际上也就是放入 R6,R7),然后传到 函数中(实际上也就是让函数使用 R6,R7 的值参与函数内的计算)。
作者: coody_sz    时间: 2024-8-15 18:29
KEIL有默认的,不指定就默认为int型。
作者: 万家灯火51    时间: 2024-8-15 23:53
188610329 发表于 2024-8-15 17:38
一个合格的程序,需要有很多“默认”的定义。
以keil4 PK51 为例,你没有定义的前提下,默认是通过 R6,R7  ...

谢谢,这么说就清楚了。
作者: 万家灯火51    时间: 2024-8-15 23:54
coody_sz 发表于 2024-8-15 18:29
KEIL有默认的,不指定就默认为int型。

感谢!这些默认的知识哪里能看到呢,感觉相关的书籍都没有介绍。
作者: chchking    时间: 2024-8-16 03:25
形参是默认
作者: wufa1986    时间: 2024-8-16 08:04
不建议写这种程序,在不同编译器会有不同表现
作者: dhjmw    时间: 2024-8-16 11:10
还是确定一点的好,否则,不单自己不放心,读起来也不舒服。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1