typedef
typedef 是给某一个变量类型起别名,原来正统的变量类型名依然可以使用。但是typedef通常的用法是给自己定义的类型起别名。
typedef关键字:作用 给变量类型取别名。预处理之后不会被替换(宏会被替换)。有作用域(宏没有作用域,全局)。
typedef int tni;
typedef int *p;
p q;//(给int * 定义别名p int *q; == p q;)
C语言宏
#include <stdio.h>
//预处理:
// 1.展开头文件(如 展开 include <stdio.h>的内容)
// 2.宏替换:本质就是发生在预处理的单纯的字符串替换,预处理宏替换仅单纯替换不进行任何操作
//宏定义: 就是常量,数组buffer。不以分号结尾
#define R 20
#define N(n) n*10
#define M int main(
//1. 声明宏函数的时候:给表达式加上括号,防止替换后在优先级上出现运算错误!
//2. 宏相对于函数的优势:宏对于函数实参的要求比较宽泛。
// 例如:同一个加法宏函数,即可以用于两个整型数求和,
// 也可用于两个浮点型数据的求和,而函数要做到这一点的话必须要对函数的形参类型进行改动!
#define ADD(a,b) (a+b)
int add(int a,int b)
{
return a+b;
}
typedef int tni;//给类型起别名
M)
{
tni a = R;
int b= N(a);// int b = a*10;
printf("b=%d\n",b);
int c = add(10.0,10.5);
printf("c = %d\n",c);//输出20,因为被强制转换为int
float d = ADD(10.0,10.5);
printf("d = %f\n",d);//输出20.5
int e = ADD(a,b)*ADD(a,b);
printf("e=%d\n",e);// int b = a*10;
return 0;
}