计算机操作及程序设计
C语言中宏的使用作者:chellee 来源:http://doc.wendoc.com 时间:2009-2-13
在C语言中使用宏,我们经常这么做,但是为什么使用宏,他可以做什么,我们或许只是一知半解,下面简单介绍如何在C语言中使用宏预处理器。
#define语句 对于define语句,我们已经非常熟悉,一个宏定义语句,主要用途是定义符号常量,如:
#define PI 3.14159
定义了圆周率PI 为3.14159,在以后用到3.14159的地方直接用PI代替即可,也方便我们编写代码,更大的好处是,如果我不想将圆周率定为3.14159而要求更高精度,如3.14159265,则只需将上面的宏定义改为:
#define PI 3.1415926
即可,无需到程序中用到这个值的地方逐一修改。
下面介绍#define的高级应用
A、 带有参数的宏定义语句我们也可以定义接受参数的符号,如AQUARE:
#define SQUARE(x) x*x
在以后用到SQUARE(a) 是,将会自动用a*a替换,
如SQUARE(3)将被替换成3*3,这个函数的好处是不论x是什么类型,都可进行同样的处理,double,int类型都可处理,但存在一个问题,如
y=SQUARE(a+1)则将被替换成a+1*a+1
这不是我们想要的结果,所以最好用下面的方法定义
[size=+0]#define SQUARE(x) (x)*(x)
类似可以定义如下函数:
[size=+0]#define MAX(a,b) ((a)>(b))?(a):(b))
B、接受可变参数个数的宏宏定义同样可以接受可变参数个数的参数列表,为了向预处理器表明我们的宏接受可变参数,可以在参数列表后面跟上三个点(...),在随后的宏定义表达式中,我们使用特殊符号__VA_ARGS__来代表具体参数(注意,前后是双下划线),例如我们定义:
#define debugPrintf(...) printf("DEBUG: "__VA_ARGS__)
则可用下面方式使用该宏
debugPrintf("Hello world\n");
或者
debugPrintf("i= %d, j=%d \n",i,j);
输出分别为(加入i=100,j=200):
DEBUG: Hello World
DEBUG: i=100, j=200
C、#操作符如果我们在参数操作符的前面放置一个#,那么C语言的预处理器将使用该参数生成一个常数字符串,例如我们定义str如下:
#define str(x) #x
如果在程序中输入语句
str(testing)
最终展开形式将会是
"testing"
而语句 printf(str(Programming in C is fun:\n));将被转换为:
printf("Programming in C is fun:\n");
D、##操作符在宏定义中,这个操作符可以把两个符号连接起来。##操作符的前面或者后面可以是宏的参数,预处理器在展开宏的时候,将把该参数和##操作符前面或者后面的符号连接起来,以便创建一个新的符号。如:
#define printx(n) printf("%d\n", x##n)
语句中的字符串“x##n”的##操作符将前面和后面的记号连接起来,合成一个新的记号,因此
C 语言宏定义使用技巧写好 C 语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一 些成熟软件中常用得宏定义。。。...
C语言中宏的使用 收藏 关于#和## 在C语言的宏中,#的功能是将其后面的宏...比如: #define ceil_div(x, y) (x + y - 1) / y 那么 a = ceil_...
c语言宏的使用_IT/计算机_专业资料。C语言宏的高级使用,网络。。。众多...so, here we go 分析过程,逐层分析,逐层展开,例如 TTL_TPARAMS(1): #...
(val)+1 : (val)) 16,返回数组元素的个数 #define ARR_SIZE( a ) ( ...DO(a,b); //产生错误 else C 语言中如何使用宏 C(和 C++)中的宏(Macro...
宏的使用方法_IT/计算机_专业资料。C语言的宏使用方法在这里总结宏的使用方法 欢迎补充 1 条件 include 如下 CODE #ifndef MAIN_H_ #define MAIN_H_ 其它内容...
C 语言宏定义技巧(常用宏定义) 写好 C 语言,漂亮的宏定义很重要,使用宏定义...等等。下面列举一些成熟软件中常用得 1,防止一个头文件被重复包含 #ifndef COM...
中宏1 43页 1下载券 中宏1] 44页 免费 C语言中宏的使用(1) 5页 1下载券...曼昆中宏课件Ten Principles of Economics Chapter 1 Economy...
C语言使用宏总结_理学_高等教育_教育专区。欢迎下载!!!MASM 宏使用总结...在 MASM 中宏可以分为两种: 1、 Text Macro 2、Procedure (Function) Macro。...
C 语言宏定义定义简单的常数:定义常量,便于修改(切不可在后面加上分号!) 定义...{ /* line 1 */ (0) 这样只要保证总是使用分号,就不会有任何问题。 /*...
宏定义的使用_工学_高等教育_教育专区。介绍了C语言宏定义的使用方法#define 用法 发现其实宏定义也挺强大的。呵呵 1、 用无参宏定义一个简单的常量 #define LE...
2页 免费 C语言预处理命令之条件编译... 7页 免费 CToolBar的使用总结 59页 免费 C语言中宏的使用(1) 5页 1财富值 C宏定义 13页 免费搜...
热门文档