typedef和#define的不同以及使用注意事项

typedef和#define的不同

任何声明变量的语句前面加上 typedef 之后,原来是变量的都变成一种类型。不管这个声明中的标识符号出现在中间还是最后。而 #define 不同,#define 在预处理阶段就完成替换工作,且是一种纯文本的替换。

参考:https://www.zhihu.com/question/29798061


整型

typedef int x; // 定义了一个名为x的int类型

结构体

typedef struct { char c; } s; // 定义名为s的struct类型

指针

typedef int *p; //定义了一个名为p的指针类型, 它指向int

数组

typedef int A[];  // 定义一个名为A的ints数组的类型

函数

typedef int f(); // 定义一个名为f, 参数为空, 返回值为int的函数类型
typedef int g(int); // 定义一个名为g, 含一个int参数, 返回值为int行的函数类型

typedef的四个用途

  1. 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。
  2. 帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为: struct 结构名 对象名。而在C++中,则可以直接写:结构名 对象名
  3. 用typedef来定义与平台无关的类型。(很适用嵌入式开发)
  4. 为复杂的声明定义一个新的简单的别名。方法是:在原来的声明里逐步用别名替换一部分复杂声明,如此循环,把带变量名的部分留到最后替换,得到的就是原声明的最简化版。

参考:https://www.cnblogs.com/charley_yang/archive/2010/12/15/1907384.html


综上:
  • typedef 作为C语言的产物,在C++中基本不使用,一般只用于struct的代码简化。其他情况可以使用诸如using等语句。

  • 而在C语言中,一般情况下可以起到比define更加灵活的效果,除了常量的定义外,如果需要代码简化,还是应该使用typedef较好。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值