无参数的宏定义(宏常量)
如果在程序中大量使用到了100 这个值,那么为了方便管理,我们可以将其定义为: const int num= 100:但是如果我们使用num定义一个数组,在不支持c99标准的编译器上是不支持的,因为num不是一一个编译器常量,如果想得到了一一个编译器常量,那么可以使用:
#define num 100
在编译预处理时,将程序中在该语句以后出现的所有的num都用100代替。这种方法使用户能以一个简单的名字代替一个长的字符串,在预编译时将宏名替换成字符串的过程称为“宏展开”。宏定义,只在宏定义的文件中起作用。
//无参数宏定义
#include<stdio.h>
//常量习惯于大写字母
#define NUM 100 //在文件编译时将NUM替换为100,宏定义不是c语言,不在末尾加分号
int main(void)
{
printf("%d\n",NUM); //printf("%d\n",100);
printf("%d\n",NUM*10); //printf("%d\n",100*10);
//NUM不能被赋值
//NUM=123; //错误 100不能等于123
return 0;
}
#include<stdio.h>
//带参数的宏变量一般会加上() 防止运算的优先级别导致代码出错
//因为宏定义展开是将内容原封不动得替换
#define SUM(x,y) (x+y)
int main(void)
{
int a=10;
int b=20;
int sum;
sum=SUM(a,b)*30; //sum=(10+20)*30;
//sum=SUM(a,b)*30; //sum=10+20*30; 如果上面的宏定义中(x+y)没有括号,将出现这种情况
printf("%d\n",sum);
return 0;
}