typedef与define宏定义用于声明新的类型之间的区别

摘自《c专家编程》

typedef可以看成一种彻底的封装类型,在typedef声明类型之后不能再往里面增加其他的内容。

例子:

#define peach int
unsigned peach i;    //没问题

typedef int banana;
unsigned banana i;    //错误,不能增加unsigned

#define宏定义只是用于简单的替换

#define int_ptr int *

int_ptr chalk, cheese;
int * chalk, cheese;    //展开之后,chalk是指针变量,cheese是整型变量

typedef int * int_ptr;
int_ptr chalk, cheese;    //chalk和cheese均为整型指针变量
时间: 2024-12-05 16:06:05

typedef与define宏定义用于声明新的类型之间的区别的相关文章

#define 宏定义 与 typedef 类型定义

一 #define 宏定义 1. 宏基本定义 #define 宏名 宏定义字符串 # 表示它在预编译处理中起作用,而不是真正的 C 语句,行尾无须跟分号,如果加了分号,分号作为宏定义的一部分. 宏名常采用大写字母,宏名与定义字符串间用空格分隔,所以宏名之间不能有空格. 宏定义字符串是宏名对应的具体实现过程,可以是任意字符串,中间可以有空格,以回车符作为结束. 栗子:#define PI 3.1415926 宏的用途: 1)符号常量,如PI.数组大小定义,以增加程序的灵活性 2)简单地函数功能实现

define宏定义中的#,##,@#及\符号

define宏定义中的#,##,@#及\符号 在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串. 1.# (stringizing)字符串化操作符.其作用是:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串.其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前. 如: #define example(instr) printf("the input string is:\t%s\n",#

iOS 7:漫谈#define 宏定义(转)

iOS 7:漫谈#define 宏定义 #define宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多.但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加. 如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的技能(虽然宏本身可能并不漂亮优雅XD).但是因为宏定义对于很多人来

const基础知识、const在C++和C中的异同、const与#define宏定义的异同

1.const基础知识 (1)用const定义常量 const int a = 5;   //定义了一个int型常量a,其值为5 (注:在C++中将其存储在符号表中(key,value),并不分配内存空间,只有在取地址或者定义为全局变量在其他文件中使用时才分配内存空间) (2)const与指针 1 const int* p1 = &a; //p1是指向常量a的指针,a的值不能通过指针p1改变 2 3 int* const p2 =&b; //p2是只能指向b的指针,b的值可以通过p2改变

iOS define 宏定义 和 const定义常量区别

const   const 是c++中的修饰符.  c++中常用来定义常量,修饰左值. #define 宏定义语句, 在预处理阶段直接做文本替换,不做类型检查. 它们之间的最大区别: 1.  对于const 变量,系统只给了一个相应的内存地址,而#define则是给出了一个立即数.因为const变量是存放在内存的静态区域中,所以在程序运行过程中const变量只有一个拷贝,而#define 所定义的宏变量却有多个拷贝,所以宏在程序运行过程中所消耗的内存要比const变量的大得多.#define所定

typedef 类型重命名 和 #define 宏定义(1)

http://www.blogjava.net/jasmine214--love/archive/2010/11/29/339307.html 在现实生活中,信息的概念可能是长度,数量和面积等.在C语言中,信息被抽象为int.float和double等基本数据类型.从基本数据类型名称上, 不能够看出其所代表的物理属性,并且int.float和double为系统关键字,不可以修改.为了解决用户自定义数据类型名称的需求,C语言中引入类 型重定义语句typedef,可以为数据类型定义新的类型名称,从而

常使用的宏定义归类(新添加的一些)

自己新添加的一些可用常用定义:(下载地址:http://download.csdn.net/detail/hbblzjy/9570700) //安全释放 #define RELEASE_SAFELY(__Pointer) do{[__Pointer release],__Pointer = nil;} while(0) // 屏幕的物理高度 #define ScreenHeight [UIScreen mainScreen].bounds.size.height // 屏幕的物理宽度 #defi

define 宏定义

1.写出两个整数交换的宏定义 #define SWAP(a,b) {a=a+b; b=a-b; a=a-b; } 2.设计一个单行的宏ARRAY_SIZE(x),用于计算x代表的数组的元素数目 #define ARRAY_SIZE (sizeof x(array)) 3.条件编译: 预处理功能(宏定义.文件包含.条件编译)中的条件编译. #ifndef xxx //测试是否被宏定义过 #define xxx ... #endif 作用:头文件的重复包含和编译. #ifdef 标识符 ... #e

iOS 7:漫谈#define 宏定义

#define宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多.但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加. 如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的技能(虽然宏本身可能并不漂亮优雅XD).但是因为宏定义对于很多人来说,并不像业务逻辑那样是每天会接触的东西