宏 #,##,_ _VA_ARGS_ _

宏里面使用:

一、#  转为字符串

#define PSQR(x) printf("the square of" #x "is %d.\n",(x)*(x))         如果使用PSQR("test2”),则编译出错;而使用PSQR(test2),则ok;

#define TEST2(p) (cout<<#p<<endl);    如果TEST2("test2");  输出”test2“。奇怪?

 

二、##  连接两个参数

#define XNAME(n) x##n,如果n为a,则展开后为xa。

 

三、_ _VA_ARGS_ _,C99引入的。

#define PR(...) printf(_ _VA_ARGS_ _)
#define qWiFiDebug(format, ...) printf("[WiFi] "format" File:%s, Line:%d, Function:%s", ##__VA_ARGS__, __FILE__, __LINE__ , __FUNCTION__);
#define pr_err(format, ...) fprintf(stderr, format, ## __VA_ARGS__)
宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错

#define XNAME(n) x##n,如果n为a,则展开后为xa。

时间: 2024-08-31 22:50:34

宏 #,##,_ _VA_ARGS_ _的相关文章

宏定义中的##操作符和... and _ _VA_ARGS_ _

1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operator, the ## operator can be used in the replacement section of a function-like macro.Additionally, it can be used in the replacement section of an object-like macro. The ## operator co

数据结构_考试题_求大神相助

问题描述 数据结构_考试题_求大神相助 主题下载"> 图片说明](http://img.ask.csdn.net/upload/201501/21/1421830891_832514.png) A B c d E f g 试画出上图无向图的邻接表存储结构,并给出以定点A为出发点的深度优先遍历序列和广度优先遍历序列 解决方案 a b c d e f g a - b 1 - c 1 1 - d 0 0 1 - e 0 1 1 0 - f 0 0 0 0 1 - g 0 0 1 0 0 0 深度

表达式-数据结构_考试题_求大神帮助

问题描述 数据结构_考试题_求大神帮助 表达式axb+(c-d/e)xf的前缀表达式为什么啊! 大神知道的,帮助一下,万分火急啊 解决方案 有点不记得了,是不是+×ab×-c/def ,你可以参考下其他人的答案. 解决方案二: +*ab*-c/def 解决方案三: 前缀表达式最简单了,相当于改写成函数形式,脱掉括号 比如 a+b 前缀就是add(a, b),对吧,我们把add写作+,脱掉括号就是+ab 再比如 a+b*c 就是 add(a, mul(b, c)) 那么就是 +a*bc 解决方案四

从零开始_学_数据结构(一)——算法的基本概念

从零开始_学_数据结构(一)--算法   算法的定义: 解决问题的方法. 对于同一个问题,一个好的算法比一个差的算法,效率更高,更节约资源.   For Computer:算法是解决特定问题的求解步骤的描述,在计算机中,表示指令的有限序列,每条指令表示一个或者多个操作. 简单来说,算法就是输入代码,告诉计算机,你应该怎么解决这个问题.     算法的特性: (1)输入和输出.        光算出结果但不输出结果,跟没算没区别:要计算,总得有数据,不然没法计算. (2)有穷性:        能

WEWIN268标签打印机_使用说明_信息与通信_工

问题描述 评分:4/546页WEWIN268标签打印机_使用说明_信息与通信_工程科技_专业资料.重要安全事项在没...驱动程序和标签编辑软件...33第三章维护...wenku.baidu.com/link?u...2012-06-27-百度快照-82%好评 解决方案

【启用3个新域名,6个分站点】网址导航_论坛_查字典_微测试_QQ聊天交友网_微信(易信,新浪)二维码交友_健康测试

启用3个新域名,6个分站点 网址导航_论坛_查字典_微测试_QQ聊天交友网_微信(易信,新浪)二维码交友_健康测试 网址导航:http://www.ihaonet.com/ 论坛:http://bbs.ihaonet.com 查字典:http://dict.ihaonet.com 微测试:http://vceshi.ihaonet.com QQ聊天交友网:http://qq.ihaonet.com/ 微信(易信,新浪)二维码交友网:http://weixin.ihaonet.com 每餐餐前健康

Python语法基础_控制语句_输入输出语句详解

前言 程序最基本需要的两个要素,一个是数据,另外一个便是逻辑.而控制语句在程序中扮演的角色便是实现程序的逻辑,即数据的导向和对数据的操作.当然,这并不代表,程序中的数据的行为只能通过控制语句来实.但在Python编写的自动化脚本中,控制语句将会被频繁的使用. 输入 输入输出,简单来说就是从标准输入中获取数据和将数据打印到标准输出,常被用于交互式的环境当中,Python实现输入的方法有下面两种: raw_input() raw_input( ):获取输入后,返回一个String类型. 下面实现一个

从零开始_学_数据结构(四)——查找算法、索引、二叉排序树

查找算法   基本概念: (1)关键字:假如有结构 struct Node //一个结点,存储数据和指针 { DATA data; //数据属性,用于存储数据 int key; //假设key为int值,其在整个表里是唯一的 //指针域,具体略,指向其他结点,或者是数组的下标 }; key值便是关键字,对于每一个结点而言,其key值都是不一样的(不一定必须是int值).因此,当我们查找数据时,只要知道其key值,然后对比key值和我们要查找的key值是否相同,便能判断是否是我们要查找的数据了.

从零开始_学_数据结构(五)——STL(map、set、list、vector)

STL容器   前注: STL(标准模板库)是一个C++的软件库,也是C++标准程序库的一部分. 这些容器,应该都是STL里面的一个类. vector封装数组.list封装链表.map和set封装二叉树   一.list 在不懂的时候,list可以理解为双向链表(很像,但事实上不是). (1)声明一个list对象: ①包含头文件list:#include<list> ②声明他:std::list<int> one; //声明一个list对象 ③需要注意,list位于std名称空间之