C语言宏与typedef

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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值