打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C语言中关于宏定义的各种问题
-------C陷阱与缺陷 第六章
1、不能忽视宏定义中的空格
如 #define f (x) ((x)-1) 意思为 f 代表 (x) ((x)-1)
#define f(x) ((x)-1) 意思为f(x)代表 ((x)-1)
2、所有的宏在编译器预编译时就进行替换。
3、宏并不是函数(例子略)
4、宏并不是语句(例子略)
5、宏并不是类型定义
#define 是否可以代替 typedef ???
C语言支持一种叫做typedef的机制,它允许你为各种数据类型定义新的名字。但是可以用#define 代替
typedef 么?
答案是不可以,至少在某些情况下是不可以的。关于两者的区别有很多,从编译角度来讲,#define会在
预编译的时候,就会替换define的内容,而typedef不是。
论实现的效果上,有一种情况#define是不能代替typedef的,如:
typedef int* PINT;
PINT p1,p2;//这两条语句的意思是定义了两个int型的指针。
可如果改成#define之后呢?请看如下:
#define int* PINT
PINT p1,p2;//这条语句再预处理之后就会将宏替换掉,变成 int*p1,p2;意思是定义了一个int型的指针p1,
和一个int型的常量p2!!!
所以在这种情况下,#define是不能替换typedef的!!!!!!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
#define、const、typedef的差别
typedef #define 区别
typedef与#define
Typedef和define
iOS开发,#define的使用(系列一)
C 中的typedef语法简介
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服