我对宏的理解就是"替换"。关键字:#define
1.#define不带参数的用法
#include<stdio.h>
#define M 20
int main()
{
int a = M;
int b = 20;
/*
编译后变成以下代码
int a = 20;
int b = 20;
*/
printf("%d %d",a,b);
return 0;
}
2.#define带参数的用法
#include <stdio.h>
int sum(int v1, int v2){ return v1 + v2;}
//宏定义
/*
#define 代表要定义一个宏
definesum 宏的名称
(v1,v2) 参数,不要写数据类型
v1+v2 用于替换的内容
每个参数加上()
*/
#define definesum(v1,v2) v1+v2
#define CF(v1,v2) (v1)*(v2)
int main(int argc, const char * argv[]) {
//1.求和 用函数的方式
int a = 10;
int b = 5;
int res = sum(a,b);
printf("res=%i\n",res); //res=15
//2.使用宏
int result = definesum(a, b);
printf("result=%i\n",result); //result=15
return 0;
}
3.define中的三个特殊符号:#,##,#@**
#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
//1.连接 x##y
int n = Conn(123,456); //n=123456;
char* str = Conn("asdf", "add") //str = "asdfadf";
//2.加单引号 #@x
char a = ToChar(1); // a='1';
//3.加双引号 #x
char* str = ToString(123132); // str="123132";