目录
#define 定义常变量
#define 定义字符串
#define 定义一条代码
#define 定义的标识符是否需要加分号
#define 定义常变量
代码演示:
#define M 100 //定义常变量
代码用途:
int a = M;
int arr[M] = { 0 };
此时的 M 具有常属性,所以可以用来初始化数组,并且在程序预编译阶段,所有 M 的地方都会被替换为 100
#define 定义字符串
代码演示:
#define STR "abcd" //定义字符串
代码用途:
char* str = STR;
同样的,在程序预编译阶段,所有使用 STR 的地方都会被替换为 "abcd"
#define 定义一条代码
代码演示:
#define FOR for(int i = 0;i < 5; i++) // 定义代码
代码用途:
FOR
{
printf("hello\n");
}
所有使用 FOR 的地方都会被替换成 for(int i = 0;i < 5; i++)
代码验证:
#define 定义的标识符是否需要加分号
代码演示:
#define M 100 //不加分号
#define M 100; //加上分号
根据两段不同的代码来验证是否需要加分号
验证代码1:
int a = M;
当 M 为不加分号时(经过预编译阶段处理,M 会被替换为 100):
int a = 100;
当 M 为加上分号时(经过预编译阶段处理,M 会被替换为 100;):
int a = 100;;
此时以上的代码运行时不会出现任何错误,多一个分号只是多了一条空语句
验证代码2:
int arr[M] = { 0 };
当 M 为不加分号时(经过预编译阶段处理,M 会被替换为 100):
int arr[100] = { 0 };
当 M 为加上分号时(经过预编译阶段处理,M 会被替换为 100;):
int arr[100;] = { 0 };
此时代码就会出现语法问题,程序会直接报错,而且程序只会报错在定义 arr 数组的这一行,所以尽量不要加分号