最新c语言中define简单使用实例(3篇)
在日常的学习、工作、生活中,肯定对各类范文都很熟悉吧。范文怎么写才能发挥它最大的作用呢?下面是小编为大家收集的优秀范文,供大家参考借鉴,希望可以帮助到有需要的朋友。
c语言中define简单使用实例篇一
不赘述了,说一下其他的吧,如#define max 10,编译器在处理这个代码之前会对max进行处理,替换为10,或许有些人认为这样的定义看起来和const常量很相似,但是他们还是有区别的,#define的定义其实就是简单的文本的`替换,并不是作为一个量来使用
很多就会问了,什么?居然还能用#define来定义函数,坑爹么?其实咋说呢,就是类似的一个函数定义罢了,和真正的函数定义当然还是有区别的了,下面进行举例说明:
还是用上面的max的例子:
#define max(a,b) ((a) > (b) ? (a) : (b))
这个定义就返回两个数中较大的那个,不知道你们看到了没看到,这个”函数“没有类型检查,像不像函数模板?像?不像?
其实是有点像的,可以作为一个普通的模板来使用罢了,他肯定没函数模板那么安全,why?看下面的例子:
#define minus(a,b) a – b,眨眼一看,这个肯定是减法操作的define,有木有?对,没错,就是这个意思,这个定义在一般的使用中没问题,但是在特定的情况下使用会出现问题,如果我们要这样去使用 的话,展开之后会是什么样子呢?如:2 * minus(a,b) / 4,就像我前面所说的那样,宏其实就是一个简单的文本替换,所以展开时候就变为 2 * a – b / 4,和我们想要的结果是不是不一样?是不是错 了?有木有?那要如何解决这个问题呢,很简单,给原定义加一个括号就ok了,也就是#define minus(a,b) (a – b)
再说一个经常出现的一个错误,看下面的例子:
#define pin int *
pin a,b;
本意其实都想让a和b成为int型指针,但是实际上却变成了int *a,b;a是int型指针,b是int型变量,咋处理捏?这个时候typedef就出来了,它说我可以满 足define满足不了的要求,所以改成
typedef pin (int *)
就ok了。
tip:我们在写code的时候一定要养成一个良好的习惯和一个良好的代码编写风格,建议所有的层次都加上括号
#define a(x) ##x
#define b(x) #@x
#define c(x) #x
如果我们假设x=1,那么a(1)就是1,b(1)就是‘1’,c(1)就是”1“
#define可以进行多行定义,虽然看起来有点蛋疼,但是确实是一个灰常经典而且在设备驱动代码中经常要用到的一个方法,格式如下:
#define macro(arg1,arg2) do {
test1;
test2;
}while(0)
tip:在每一行的末尾要加上,切记!
定义一个宏使用#define,取消一个宏定义使用#undef
格式如下:#ifdef … (#else) … #endif
如:
#ifdef hello
#define world 1
#else
#define world 0
#endif
由于头文件包含可以嵌套,那么c文件有可能包含多次同一个头文件,就会出现重复定义的问题的,那么可以就通过条件编译开关来避免重复包含,如下:
#ifndef _hello_h_
#define _hello_h_
...
//文件内容
...
#endif
c语言中define简单使用实例篇二
规定;使明确;精确地解释;画出…的线条
define的英语音标
英 [di?fain] 美 [d??fa?n]
define的时态
现在分词: defining
过去式: defined
过去分词: defined
c语言中define简单使用实例篇三
1、 please listen while i define your duties.
在我规定你的职责时,请仔细听好。
2、 please define the words.
请准确地解释这些字的意义。
3、 its hard to define exactly what has changed.
很难解释清楚到底发生了什么变化。
4、 we define education very broadly and students can study any aspect of its consequences for society.