作者:hxxiaopei

链接: 如何使用# ## ... _ _VA_ARGS_ _

1.#
假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化(stringizing).
#incldue <stdio.h>
#define PSQR(x) printf("the square of" #x "is %d./n",(x)*(x))
int main(void)
{
    int y =4;
    PSQR(y);
    PSQR(2+4);
    return 0;
}
输出结果:
the square of y is 16.
the square of 2+4 is 36.
第一次调用宏时使用“y”代替#x;第二次调用时用“2+4"代#x。
2.##
##运算符可以使用类函数宏的替换部分。另外,##还可以用于类对象宏的替换部分。这个运算符把两个语言符号组合成单个语言符号。例如:
#define XNAME(n) x##n
这样宏调用:
XNAME(4)
展开后:
x4
程序:
#include <stdio.h>
#define XNAME(n) x##n
#define PXN(n) printf("x"#n" = %d/n",x##n)
int main(void)
{
    int XNAME(1)=12;//int x1=12;
    PXN(1);//printf("x1 = %d/n", x1);
    return 0;
}
3.可变宏 ...和_ _VA_ARGS_ _
实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)。这样预定义宏_ _VA_ARGS_ _就可以被用在替换部分中,以表示省略号代表什么。比如:
#define PR(...) printf(_ _VA_ARGS_ _)
PR("hello");-->printf("hello");
PR("weight = %d, shipping = $.2f",wt,sp);
    -->printf("weight = %d, shipping = $.2f",wt,sp);
省略号只能代替最后面的宏参数。
#define W(x,...,y)错误!

转载于:https://www.cnblogs.com/flyingdirt/p/4237646.html

转载--如何使用# ## ... _ _VA_ARGS_ _相关推荐

  1. 宏定义中的#、##操作符和... 、 _ _VA_ARGS_ _解析

    #   #符号作为一个预处理运算符,它可以把语言符号转化成字符串.例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串.该过程称为字符串化(stringizing). 例子 #incldu ...

  2. python搭建_简单_交易系统【转载】

    python搭建_简单_交易系统[转载] 构建account_class 类 构建所需函数 构建最大回撤.收益率.回测函数 构建银行翻倍.选股函数 回测实证分析 (转自 https://www.joi ...

  3. 统计_statistics_不同的人_大样本_分析_统计方法_useful ?

    统计_statistics_不同的人_大样本_分析_ 转载于:https://www.cnblogs.com/books2read/p/11313825.html

  4. matlab 状态估计,基于_当前_统计模型的目标状态估计MATLAB 实现

    % 基于_当前_统计模型的目标状态估计 % 主要靠 kalman滤波实现对物体运动轨迹的估计 %已知运动状态 %初始速度 600 1.匀速10s 2.加速度5,持续10s 3. 匀速5s %采样周期  ...

  5. [JS 分析] 天_眼_查 字体文件

    0. 参考 js分析 猫_眼_电_影 字体文件 @font-face 1. 分析 1.1 定位目标元素 1.2 查看网页源代码 1.3 requests 请求提取得到大量错误信息 对比猫_眼_电_影抓 ...

  6. (原码反码补码的计算)在一个8位的二进制的机器中,补码表示的整数范围是从_(1)_(小)到_(2)_(大)。这两个数在机器中的补码表示为_(3)_(小)到_(4)_(大)。数0的补码为_(5)_。

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 题目 分析过 ...

  7. 超鸿蒙是什么意思,帝垣的组词_拼音_意思_近反义词(造句)

    下面为大家详细介绍帝垣的拼音_组词_造句_意思_反义词(近义词),内容主要包含垣的组词, 帝垣是什么意思, 帝垣的拼音_怎么读, 帝垣的造句_造句大全, 帝的组词, 开头是帝的词语_成语, 结尾是垣的 ...

  8. 王利芬对话蒲易 ——花店如何成为高端电商?_北京_歇会儿网

    王利芬对话蒲易 --花店如何成为高端电商?_北京_歇会儿网 王利芬对话蒲易 --花店如何成为高端电商?_北京_歇会儿网 王利芬对话蒲易 --花店如何成为高端电商? posted on 2014-06- ...

  9. 电芯:聚合物的一定比18650更好_移动电源_移动电源评测-中关村在线

    电芯:聚合物的一定比18650更好_移动电源_移动电源评测-中关村在线 电芯:聚合物的一定比18650更好_移动电源_移动电源评测-中关村在线 posted on 2016-08-26 18:14 l ...

  10. 凡客副总裁崔晓琦离职 曾负责旗下V+商城项目_科技_腾讯网

    凡客副总裁崔晓琦离职 曾负责旗下V+商城项目_科技_腾讯网 凡客副总裁崔晓琦离职 曾负责旗下V+商城项目_科技_腾讯网 凡客副总裁崔晓琦离职 曾负责旗下V+商城项目 腾讯科技[微博]乐天2013年09 ...

最新文章

  1. 部队文职计算机试题,2020军队文职人员考试:计算机基础模拟试题(1)
  2. php数组转字符串 join,jQuery中将数组转换成字符串join()和push()使用
  3. 迅为linux下串口,迅为IMX6ULL开发板Linux RS232/485驱动实验(上)
  4. python:SyntaxError: invalid syntax报错
  5. linux正则 转义字符,正则表达式(5):转义符
  6. 点云库PCL学习笔记 -- 输入输出IO -- 6.PCL中记录时间长度TicToc 类和系统Time 类
  7. 怎么创建邮箱帐号?教育邮箱
  8. 面向开发的内存调试神器,如何使用ASAN检测内存泄漏、堆栈溢出等问题
  9. 开关电源输出纹波主要来源五个方面?示波器测纹波方法?
  10. Nape 不动刚体的碰撞交互
  11. python 经纬度计算相关
  12. vue原生js打印插件
  13. matlab求解一阶微分方程组
  14. 解决Android无法访问与下载文件的权限问题
  15. 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具
  16. jQuery设置attr()对样式属性失效的原因
  17. POT超阈值模型和极值理论EVT分析
  18. 2017去哪儿网前端面试心得
  19. C++模板——事半功倍的神器
  20. CTF MISC系列————5、小可爱

热门文章

  1. 注解配置springMvc及向作用域中赋值
  2. 理解 Visual C++ 应用程序的依赖项(msdn)
  3. 转: DHTMLX Tree中文开发指导
  4. 虚拟服务器 vmotion,图文并茂:深入了解VMware vMotion过程
  5. 二级MYSQL的语法整理_MySQL 常用命令及语法整理
  6. 5.MongoDB之正则表达式与聚合框架
  7. gettype拿不到值_这五种古董,别说是买豪车豪宅,放在现实中最多就值一顿饭钱...
  8. python查看服务器日志_python读取服务器日志的方法
  9. java版mc植物生长条件_植物生长三大必要条件
  10. yum安装php解析,详解Centos下YUM安装PHP的两种方式