完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前两天面试去,面试官是个做c/c++语言,通信编程的,他问了几个关于单片机用到的数据类型的问题,把我问傻了。做单片机从来没有仔细考虑过这个问题,做了半年了,突然觉着自己白搞了一样。
拿msp430为例: #define DIVS0 (0x02) /* SMCLK Divider 0 */ DIVS0被常数00000010赋值,0x02是char型的吗?那么DIVS0是什么型的? 再比如:#define CPUOFF (0x0010u) 0x0010u是无符号整形的吧,那么CPUOFF是什么型的?接着如下 #define LPM0 (CPUOFF) 那么定义的LPM0又是什么类型的? 从前知识照着demo去编写程序,确没有从软件的角度去分析过,有没有牛人过来指点一下? |
|
相关推荐
5个回答
|
|
我觉得宏定义只是名称和数值,具体类型与实际程序中使用这个宏的位置和编译器有关
|
|
|
|
对,define相当于替换。但是对于表达式来说,左端为变量,所以它的类型肯定是已经确定的了,那么给寄存器赋值时或许会有个类型的强制转换,但是寄存器在厂商或者编译平台中是怎么定义的呢? |
|
|
|
个人理解:编译平台通常都是有针对性对某些MCU编程,比如在建立工程文件前需要选择MCU型号等,这一过程也许就已经将MCU的各个寄存器地址的寄存器类型已做了预处理,比如32位、16位还是8位。寄存器赋值都是无符号数的吧,因为有符号数意义不大。 |
|
|
|
说的太对了,一语点破! u8、u16~ |
|
|
|
这一点确实需要注意总结,
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
522 浏览 0 评论
656 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
978 浏览 0 评论
1042 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
735 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12045 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 14:02 , Processed in 0.613672 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号