#define的用法及与typedef的区别#define的用法及与typedef的区别1.简单的define定义#define MAXTIME1000一个简单的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*);pina,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我们假设:
#define的用法及与typedef的区别.doc
用户评论
推荐下载
-
Linux中nohup与的用法和区别详解
主要给大家介绍了关于Linux中nohup与&的用法和区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
22 2020-09-21 -
ASP.Net内置对象的用法与区别
Usage and difference of ASP.Net built-in objects
27 2019-06-27 -
having的用法以及与where区别介绍
having的用法一、显示每个地区的总人口数和总面积二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区mysql中的where和having子句的区别以下是having和wh
9 2021-05-15 -
C_C++中typedef_struct和struct的用法
C_C++中typedef_struct和struct的用法。
12 2020-08-23 -
预编译#define_#ifdef_#endif用法
最近在看Linux底层代码,发现好多代码里有#define#ifdef#endif,找了个介绍详细的文章,供大家参考!
26 2020-06-19 -
C语言编程技巧关于const和#define的区别心得
尽量用const和inline而不用#define这个条款最好称为:“尽量用编译器而不用预处理”,因为#define经常被认为好象不是语言本身的一部分。这是问题之一。再看下面的语句:
17 2020-09-11 -
基于python cut和qcut的用法及区别详解
今天小编就为大家分享一篇基于python cut和qcut的用法及区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
23 2020-09-21 -
简单了解java ibatis#及的区别和用法
因此使用$就会报错,若要使用$的话,需要修改为'$name$';2.1)$ 作用相等于是字符串拼接,等效于。可以防止sql注入,#是用prepareStement,提示效率#方式一般用于传入添加/修改
13 2021-06-15 -
Linux系统关机命令之间的区别及用法详解
良许教程网为您解答!熟悉linux的朋友应该知道我们在linux系统中常用到的关机命令有:shutdown、halt、poweroff、init;重启命令有:reboot。shutdown执行关机,是
8 2021-08-08 -
用法XMLHttpRequest的用法ajax同步和异步的区别
用法 XMLHttpRequest的用法 ajax同步和异步的区别
50 2018-12-17
暂无评论