在avr单片机中宏定义:
#define MAX 32768//无报警
#define MAX 16384*2//警告:integer overflow in expression
疑惑:同一个数:用表达式就会报警,直接写数就不报警?
单片机中的宏定义
答案:3 悬赏:80 手机版
解决时间 2021-03-01 08:37
- 提问者网友:一抹荒凉废墟
- 2021-02-28 15:25
最佳答案
- 五星知识达人网友:爱难随人意
- 2021-02-28 15:45
我试过ATmega16的可以通过(codevisionavr环境)、看你现在用哪款AVR单片机,你这里是乘法乘的过程出现了溢出
全部回答
- 1楼网友:北方的南先生
- 2021-02-28 17:17
怎么可能呢
- 2楼网友:迟山
- 2021-02-28 16:35
跟单片机没关系,这是c语言的东西
-------------
#是c语言里的预处理命令,编译器在编译代码之前,会预先处理这部分内容,#define 就是宏定义,对于 #define 的内容是怎样处理的呢?看下面的代码
#define max 128
void main()
{
int max=max;
}
编译器处理时,会直接把 int max=max;替换成 int max=128; 注意,是文本替换,而不是变量赋值,程序中自始至终都不存在max这个变量,相当于是用“查找-替换”功能一样,查找 max ,替换成 128 。
如果程序中有多个地方要用到同一个值、代码块,我们都可以定义成一个宏,如果这些值或代码块要改动,只需改下宏定义就行了,不用从代码中一处一处的改,很方便,而且不会因为漏掉某个地方而导致程序出错。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯