当前位置: 首页 > news >正文

#define与typedef区别

1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:

#define PI 3.1415926

程序中的:area=PI*r*r 会替换为3.1415926*r*r

如果你把#define语句中的数字9 写成字母g 预处理也照样带入。

 

2)typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名.
3)typedef int * int_ptr;与#define int_ptr int * ;
作用都是用int_ptr代表 int * ,但是二者不同,正如前面所说 ,#define在预处理时进行简单的替换,而typedef不是简单替换 ,而是采用如同定义变量的方法那样来声明一种类型。也就是说; 
#define int_ptr int *
int_ptr a, b; //相当于int * a, b; 只是简单的宏替换 
typedef int* int_ptr;
int_ptr a, b; //a, b 都为指向int的指针,typedef为int* 引入了一个新的助记符
 typedef int * pint ;
#define PINT int * 
那么:
const pint p ;//p不可更改,但p指向的内容可更改
const PINT p ;//p可更改,但是p指向的内容不可更改。 
pint是一种指针类型 const pint p 就是把指针给锁住了 p不可更改
而const PINT p 是const int * p 锁的是指针p所指的对象。 
3)也许您已经注意到#define 不是语句不要在行末加分号,否则会连分号一块置换。

相关文章:

  • Linux下命令设置别名--alias(同实用于mac)
  • Eclipse/MyEclipse导入导出注释模板
  • 正则介绍以及grep
  • AI的故事:半人马的诞生之路
  • 共享单车引发秩序问题增多,政府正在研究相关管理办法
  • web后台过程
  • 0314-布局遇到的问题(山东理工大)
  • java多线程处理导入数据拆分List集合 同步处理插入数据
  • 1011. A+B和C (15)
  • Pandora.js 视频介绍
  • display和position的值与用途
  • 吊销***用户
  • nginx 配置多 域名 + 多 https
  • 多城市将展开5G试点 启动车联网、物联网应用测试
  • 「镁客·请讲」影创孙立:AR市场规模正在急剧扩大,铺设线下体验店将成为2018年制胜关键...
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Apache Spark Streaming 使用实例
  • hadoop集群管理系统搭建规划说明
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Javascripit类型转换比较那点事儿,双等号(==)
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Netty源码解析1-Buffer
  • overflow: hidden IE7无效
  • Wamp集成环境 添加PHP的新版本
  • 从零搭建Koa2 Server
  • 仿天猫超市收藏抛物线动画工具库
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 关于字符编码你应该知道的事情
  • 来,膜拜下android roadmap,强大的执行力
  • 区块链共识机制优缺点对比都是什么
  • 驱动程序原理
  • 责任链模式的两种实现
  • MPAndroidChart 教程:Y轴 YAxis
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • #传输# #传输数据判断#
  • (145)光线追踪距离场柔和阴影
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (LeetCode 49)Anagrams
  • (ZT)出版业改革:该死的死,该生的生
  • (ZT)薛涌:谈贫说富
  • (zt)最盛行的警世狂言(爆笑)
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (三)uboot源码分析
  • (学习日记)2024.01.19
  • (一)SpringBoot3---尚硅谷总结
  • (转)jQuery 基础
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .net core 依赖注入的基本用发
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET中winform传递参数至Url并获得返回值或文件