c语言define需要分号骂,c语言define和typedef区别和使用

define完全可以理解替换,typedef代表别名。听着差不多的意思,那2者区别在哪?

先来个简单例子查看基本使用。

//define和typedef区别

#define DB double //替换 define 被替换的内容 替换的内容

typedef double db; //别名 typedef 原来的类型名 新的别名

//typedef需要分号 ,typeof 去掉以后符合语法规则,define去掉就会报错

void main()

{

//看不出区别

DB d1 = 1.2,d2=1.8; //等价 double d1 = 1.2,d2=1.8;

db d3 = 1.9,d4=2.3; //等价 double d3 = 1.9,d4=2.3;

printf("%f,%f",d1,d2);

printf("\n%f,%f",d3,d4);

}

上面唯一看出的区别就是typedef需要分号。

通过指针变量来测试2者的区别

#define DP double *

typedef double * dp;

void main2()

{

DP dp1,dp2; //DP是替换,等价 double *dp1,dp2; //dp1是指针占4个字节,dp2就是double类型数据8字节

dp dp3,dp4; //都是4字节的指针, 等价于 dobule *dp3,*dp4;

printf("%d,%d", sizeof(dp1),sizeof(dp2)); //4,8

printf("\n%d,%d",sizeof(dp1),sizeof(dp2)); //4,4

}

通过上面例子可以看出define完全就是替换,typedef则不同。

最后简单说明下,利用利用define和typedef构建函数指针

void print(int num)

{

printf("时间%d",num);

}

void main()

{

//函数指针

void(*p)(int num) = print;

p(10);

}

但是像上面第9行代码那样写多了会觉得很烦啊,可以使用define和typedef来构建

//typedef int* pint; //给int类型指针别名

typedef void(*p)(int num); //给函数指针类型别名 ,p是类型的别名

#define Pprint(X) void(*X)(int num) //带参数的宏模式

void main()

{

//函数指针

//利用typedef

p p1 = print;

p1();

//利用define

Pprint(p2) = print;

p2();

}

define与typedef 区别

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

#define与typedef区别

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

【C语言笔记】#define与typedef的区别

1.#define define是预处理指令,在编译时不进行任何检查,只进行简单的替换 宏定义的一般形式为: #define 宏名 字符串 这里所说的字符串是一般意义上的字符序列,不要和C语言中的字符 ...

#define 和typedef的区别

typedef和define的详细区别 2011-04-19 15:11 firnow firnow 字号:T | T 对于都可以用来给对象取一个别名的Typedef和define来说,是有区别的.本 ...

C++ #define,typedef,using用法区别

一.#define #define 是宏定义命令,宏定义就是将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替,是预编译命令,因此会在预编译阶段被执行 1.无参宏定义 无参宏的宏名 ...

define和typedef的区别

define和typedef的区别 define是单纯的字符替换,typedef是重新定义了新的类型 #include #define CHAR1 char* type ...

C++ —— 非类中使用const定义常量的初始化,以及#define和typedef的区别

总结一下在非类中使用const关键字定义常量时的初始化问题,亲测VS2015.顺便记录#define宏和typedef的区别. 1 首先对const声明的常量的初始化做简单小结: , w2 = , w ...

#define const typedef

#define用法 1. 定义简单的常数:定义常量,便于修改 #define N 1000 2. 定义简单的函数:注意多使用括号 define可以像函数那样接受一些参数,如下: #define max ...

#define与typedef

#define(宏定义)只是简单的字符串代换(原地扩展),它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了. typedef是为了增加可读性而为标识符另起的新名称(仅仅只是个别名), ...

随机推荐

与VS集成的若干种代码生成解决方案[博文汇总(共8篇)]

http://www.cnblogs.com/artech/archive/2010/11/17/CodeGeneration.html [第1篇] 通过CodeDOM定义生成代码的结构 我 不知道大 ...

分馅饼 Pie

Pie 链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/C 题目: Problem Description ...

Objective C笔记(第一天)

• OC语言概述 1.早在20世纪80年代早期,Bard Cox发明了Objective C, 是扩充的C,面向对象的编程语言. 2.NEXTSTEP简称NS a.1985年,Steve Jobs成⽴ ...

[游戏学习24] MFC 各种绘图 字体学习

>_<:>_<:hello.h> class CMyApp ...

VMWare Workstation的命令

1 Ctrl + Alt +   多个操作系统的切换

好的git教程

1.GitHub使用教程for VS2012 http://www.cnblogs.com/yc-755909659/p/3753355.html

Emmet快速编写代码

Emmet快速编写代码 ★div →

★CSS选择器 ​ 给标签指定id选择器 di ...

os&period;stat&lpar;filename&rpar;&period;st&lowbar;size 文件信息

os.path.getsize(i) py36\Lib\genericpath.py def getsize(filename): """Return the size ...

格式与布局 float 左右悬浮边框

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值