一 关于宏常量的长度:C51中定义一个常数宏(默认是16位的),如果用宏表示一个32位的宏而不加'L'标志的话就会出错。如 #define BLOCK_A_BASEADDR 18*64*1024 //定义一个外部FLASH分区地址时一直出错18*64*1024=0,这怎么可能呢?但确实如此。
后来得知要这样定义才可以#define BLOCK_A_BASEADDR 18L*64L*1024L //为何加了L就可以了呢?L表示long int 型,相当于强制定义也就不存在超出范围的问题了。
本文共 299 字,大约阅读时间需要 1 分钟。
一 关于宏常量的长度:C51中定义一个常数宏(默认是16位的),如果用宏表示一个32位的宏而不加'L'标志的话就会出错。如 #define BLOCK_A_BASEADDR 18*64*1024 //定义一个外部FLASH分区地址时一直出错18*64*1024=0,这怎么可能呢?但确实如此。
后来得知要这样定义才可以#define BLOCK_A_BASEADDR 18L*64L*1024L //为何加了L就可以了呢?L表示long int 型,相当于强制定义也就不存在超出范围的问题了。
转载于:https://www.cnblogs.com/jieruishu/p/6953164.html