define C语言中define的全部使用方法介绍【优秀4篇】

2023-04-30 14:19:00

预处理器是在真正的编译开始之前由编译器调用的独立程序。书包范文为小伙伴们带来了C语言中define的全部使用方法介绍【优秀4篇】,希望能够给大家的写作带来一些的帮助。

C语言中define的全部使用方法介绍 篇一

1. 最最最简单的 define 定义

不赘述了,说一下其他的吧,如#define MAX 10,编译器在处理这个代码之前会对MAX进行处理,替换为10,或许有些人认为这样的定义看起来和const常量很相似,但是他们还是有区别的,#define的定义其实就是简单的文本的`替换,并不是作为一个量来使用

2. 用 #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的时候一定要养成一个良好的习惯和一个良好的代码编写风格,建议所有的层次都加上括号

3. define 的单行定义,举例说明之,属于少见用法

#define A(x) ##x

#define B(x) #@x

#define C(x) #x

如果我们假设x=1,那么A(1)就是1,B(1)就是‘1’,C(1)就是”1“

4. define 的多行定义

#define可以进行多行定义,虽然看起来有点蛋疼,但是确实是一个灰常经典而且在设备驱动代码中经常要用到的一个方法,格式如下:

#define MACRO(arg1,arg2) do {

test1;

test2;

}while(0)

TIP:在每一行的末尾要加上,切记!

5. 定义宏和取消宏定义的方法

定义一个宏使用#define,取消一个宏定义使用#undef

6. 使用宏进行条件编译

格式如下:#ifdef … (#else) … #endif

如:

#ifdef HELLO

#define WORLD 1

#else

#define WORLD 0

#endif

7. 用define来处理头文件被头文件或者源文件包含的情况

由于头文件包含可以嵌套,那么c文件有可能包含多次同一个头文件,就会出现重复定义的问题的,那么可以就通过条件编译开关来避免重复包含,如下:

#ifndef _HELLO_H_

#define _HELLO_H_

...

//文件内容

...

#endif

define的短语搭配 篇二

define as

定义为;界定为

define policy

定义政策

define type

定义类型

define scope

定义范围

define function

定义函数

define relationship

定义关系

define category

定义范畴

define作动词的意思 篇三

规定;使明确;精确地解释;画出…的线条

define的英语音标

英 [di?fain] 美 [d??fa?n]

define的时态

现在分词: defining

过去式: defined

过去分词: defined

define的英语例句 篇四

1、 Please listen while I define your duties.

在我规定你的职责时,请仔细听好。

2、 Please define the words.

请准确地解释这些字的意义。

3、 It's hard to define exactly what has changed.

很难解释清楚到底发生了什么变化。

4、 We define education very broadly and students can study any aspect of its consequences for society.

最新范文

经典语录句子(经典8篇)04-30

文艺晚会主持稿【9篇】04-30

团建拓展训练心得体会5篇04-30

学生安全责任书优秀4篇04-30

又什么又什么四字词语三年级(最新7篇)04-30

拓展心得体会(优秀9篇)04-30

敬业守信家庭事迹材料(通用6篇)04-30

毕业生个人求职自荐书【优秀5篇】04-30

李嘉诚名人名言(经典3篇)04-30

教师一岗双责责任书(优秀10篇)04-30

149 126968