从程序的角度分析单片机中用到的常量和变量的数据类型

2019-07-15 18:47发布

前两天面试去,面试官是个做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条回答
ntmusic
2019-07-16 02:39
715690380 发表于 2014-8-15 12:48
对,define相当于替换。但是对于表达式来说,左端为变量,所以它的类型肯定是已经确定的了,那么给寄存器 ...

个人理解:编译平台通常都是有针对性对某些MCU编程,比如在建立工程文件前需要选择MCU型号等,这一过程也许就已经将MCU的各个寄存器地址的寄存器类型已做了预处理,比如32位、16位还是8位。寄存器赋值都是无符号数的吧,因为有符号数意义不大。

一周热门 更多>