宏是通过预处理器在程序运行前执行的,宏由三个部分组成,第一部分是#define预处理指令,第二部分是选定的缩写,也称为宏,第三部分称为替换体,或替换列表:#define(预处理指令) MAX(选定的缩写) 5(替换体),宏的起名规则跟其他变量的规则一样,由数字,字符,下划线组成,其中不能首字符不能是数字,宏分为两大类,一类是类对象宏,一类是类函数宏,好了,宏的基本知识讲到这里就结束先了,现在我们来讲讲变参宏的使用,我们先给出一个声明:#define MAX(x,..)
printf("HELLO,"#x"=%d"__VA_ARGS__)
这个变参宏是属于一个类函数宏的范围。
我们声明了一个变参宏,下面我将列出一个简单的程序来说明使用:
#include <stdio.h>
#define MAX(x,...) printf(" HELLO,"#x"=%d "__VA_ARGS__)
int main(void)
{
int x1=4;
int y=5,h=3;
MAX(x1,"y=%d,h=%d",x1,y,h );
return 0;
}
如以上代码所示,(…)代表了你可以在调用宏的参数列表中无限添加参数,最终会由替换体来代替,其中替换体的#x是字符串化的意思,调用宏的形参里是什么他就会显示什么,比如这里形参是x1,他会显示x1=,那么你将形参改为x2也是显示x2的,这个叫字符串化。
文章评论