我是靠谱客的博主 繁荣流沙,最近开发中收集的这篇文章主要介绍C语言中的宏定义,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C语言中的宏定义

C语言中的宏定义也叫做预处理命令,预处理命令是C语言本身的组成部分,不能直接对它们进行编译。

1.基本概念;

1>预处理不是C语句,是在编译前进行的

2>预处理功能主要用于下3种情况:

Ø 宏定义

Ø 文件包含

Ø 条件编译

3>宏是在编译前进行的,程序不能直接对它们进行编译,由预处理程序先进行替换。

说明:

Ø 一个预处理命令占用一个单独的行,命令末尾不使用分号作为结束符。

Ø 宏定义是专门用于预处理命令的一个专用名词,它与定义变量的含义不同,它只做字符替换,不分配内存空间。

2.不带参数的宏

1>用一个指定的标识符(即名字)来代替一个字符串,它的一般形式为

#define 标识符 字符串

Eg:

#defineMAX_NUM 100

它的作用是在本程序文件中使用指定的标识符MAX_NUM来替代 100这个字符串。

2>宏定义是用宏名代替一个字符串,也就是做简单的置换,不做正确性检查。(预编译时不做任何语法检查,只有在编译已被宏展开后的源程序时才会发现语法错误并报错)

3>宏定义不是C语句,不必在行末加分号。如果加了分号则会连分号一起进行替换

4>#definde出现在A处,则宏名的有效范围为定义命令之后到本源文件之后到本源文件结尾。

5>可以通过#undef命令终止宏定义的作用域.

#defineMAX_NUM 100;

Void main()

{

……………………. MAX_NUM的作用范围

………………….

};

#undedf MAX_NUM

f()

{

………………………….

…………………………

}

说明:当解除宏定义时,只需要指出宏标识符而不必给出后面的字符串。

6>在进行宏定义时,可以引用已定义的宏名,可以层层置换(即宏可以嵌套)

#define PI 3.141596

#define R 3.0

#define L 2*PI*R

#define S PI*R*R

7>对程序中使用双引号括起来的字符串,即使与宏名相同,也不进行置换。

eg;

printf(“L =%fn,s=%fn”,L,S);

在printf中双引号内的L不进行替换,双引号外的进行替换。

最后

以上就是繁荣流沙为你收集整理的C语言中的宏定义的全部内容,希望文章能够帮你解决C语言中的宏定义所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部