C语言中用宏怎么构造标识符
导语;标示符(IDentifier)是指用来标识某个实体的一个符号。在不同的应用环境下有不同的含义。那么用宏怎么构造标识符呢?一起来学习下吧:
怎么用宏来构造标识符,需要引用符号粘贴操作符——##,“##”的作用是将右边“操作数”追加到左边“操作数”,将最后的符号标识作为变量的.标识符,不过最后的标识符要符合标识符的规定。
例如:
#define PASTE(a, b) a##b
应用:
char *PASTE(te, st) = “Hello, world!”;
printf(“%s”, test);
又如:
#define PASTE(a, b) char *a##b
应用:
PASTE(te, st) = “Hello, world!”;//te、逗号、空格、st,逗号是用来隔开标识符的,空格会被自动忽略掉
printf(“%s”, test);
上面两个例子最终都会构造出test标识符。
又Linux kernel的sysfs中,DEVICE_ATTR、DRIVER_ATTR、CLASS_ATTR、BUS_ATTR的标识符定义也用了“##”粘贴操作符,如下:
#define BUS_ATTR(_name, _mode, _show,_store)
struct bus_attribute bus_attr_##_name =__ATTR(_name, _mode, _show, _store)
#define CLASS_ATTR(_name, _mode, _show,_store)
struct class_attributeclass_attr_##_name = __ATTR(_name, _mode, _show, _store)
#define DRIVER_ATTR(_name, _mode, _show,_store)
struct driver_attributedriver_attr_##_name =
__ATTR(_name, _mode, _show, _store)
#define DEVICE_ATTR(_name, _mode, _show,_store)
struct device_attribute dev_attr_##_name= __ATTR(_name, _mode, _show, _store)
-
C语言自增(++)和自减(--)
C语言源自KenThompson发明的B语言,那么大家知道C语言自增(++)和自减(--)是什么呢?下面一起来看看!一个整数自身加一可以这样写:a+=1;它等价于a=a+1;。但是在C语言中还有一种更简单的写法,就是a++;或者++a;。这种写法叫做自加或自增;意思很明确,就是自身加一。相应...
-
c语言中多个if的用法
c语言中多个if的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中多个if的用法的用法,希望对你们有用。c语言中多个if的用法的用法如下:用if语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。C语言的if语句有三种基本形式。语句的...
-
C语言顺序结构知识归纳
C语言的顺序结构里面有哪些知识需要学习的呢,下面小编为大家归纳了C语言顺序结构知识,欢迎大家阅读!C语言顺序结构知识归纳一、表达式语句、函数调用语句和空语句1.C语言的语句共分五大类:表达式语句、控制语句、函数调用语句、空语句和复合语句。2.表达式语句的...
-
计算机二级C语言上机考前临考练习
计算机二级考试中C语言一直是考生的困扰,下面是本站小编整理的计算机二级C语言上机考前临考练习,更多计算机二级考试内容请关注应届毕业生考试网。填空题用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相...