资料
  • 资料
  • 专题
#define的用法及与typedef的区别.doc
推荐星级:
时间:2019-12-24
大小:35KB
阅读数:639
上传用户:238112554_qq
查看他发布的资源
下载次数
0
所需E币
4
ebi
新用户注册即送 300 E币
更多E币赚取方法,请查看
close
资料介绍
#define的用法及与typedef的区别 #define的用法及与typedef的区别 1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写 if(i 编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。 这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像 是简单的文本替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。 2.define的“函数定义” define可以像函数那样接受一些参数,如下 #define max(x,y) (x)>(y)?(x):(y); 这个定义就将返回两个数中较大的那个,看到了吗?因为这个“函数”没有类型检查,就 好像一个函数模板似的,当然,它绝对没有模板那么安全就是了。可以作为一个简单的 模板来使用而已。 但是这样做的话存在隐患,例子如下: #define Add(a,b) a+b; 在一般使用的时候是没有问题的,但是如果遇到如:c * Add(a,b) * d的时候就会出现问题,代数式的本意是a+b然后去和c,d相乘,但是因为使用了define (它只是一个简单的替换),所以式子实际上变成了 c*a + b*d 另外举一个例子: #define pin (int*); pin a,b; 本意是a和b都是int型指针,但是实际上变成int* a,b; a是int型指针,而b是int型变量。 这是应该使用typedef来代替define,这样a和b就都是int型指针了。 所以我们在定义的时候,养成一个良好的习惯,建议所有的层次都要加括号。 3.宏的单行定义 #define A(x) T_##x #define B(x) #@x #define C(x) #x 我们假设:……
版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或 联系我们 删除。
PARTNER CONTENT
相关评论 (下载后评价送E币 我要评论)
没有更多评论了
  • 可能感兴趣
  • 关注本资料的网友还下载了
  • 技术白皮书