c语言 宏 不定参数,C宏定义不定参数
1.#
假如希望在字符串中包含宏参数,ANSI
C允许这样作,在类函数宏的替换部分,#符号用作一个预
处理运算符,它可以把语言符号转化程字符串。例如,如
果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化(stringizing).
#incldue
#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
#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_ _)
#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)错误, VC6.0不支持 VS2005支持
c语言 宏 不定参数,C宏定义不定参数相关推荐
- python函数不定参数_python如何定义不定参数函数
*args,可以传入任意多个参数 **args,以字典形式传入任意多个参数 元组形式: 1.定义函数 def test1(*args): print('################test1### ...
- 宏定义有无参数宏定义和带参数宏定义两种
宏定义有无参数宏定义和带参数宏定义两种. 无参数的宏定义的一般形式为 # define 标识符 字符序列 其中# define之后的标识符称为宏定义名(简称宏名),要求宏名与字符序列之间用空格符分隔. ...
- java 不定参数方法_java中不定长参数的使用方法
java中不定长参数的使用方法 不定长参数方法的语法如下:返回值 方法名(参数类型...参数名称) 在参数列表中使用"..."形式定义不定长参数,其实这个不定长参数a就是一个数组, ...
- python函数参数定义顺序_18 Python - 函数定义与参数
12 函数定义与参数 01函数 (1)定义: def 函数名(参数1,参数2--): 函数体 return 结果 (2)调用: 函数名(实际参数) (3)函数作用: 最大化代码重用, 最小化代码冗余, ...
- mysql宏参数_C语言带参数的宏定义
C语言允许宏带有参数.在宏定义中的参数称为"形式参数",在宏调用中的参数称为"实际参数",这点和函数有些类似. 对带参数的宏,在展开过程中不仅要进行字符串替换, ...
- c 语言 宏 可变 参数,利用C可变参数和宏定义来实现自己的日志系统
在嵌入式应用的开发过程中,日志系统是非常重要的! 特别是在生产环节出现了偶发性的.与当前的执行环境相关的bug的时候, 如果没有日志系统来追踪问题,很难进行问题重现. 因此,实现一个自己的日志系统是很 ...
- C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策
一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...
- 【C语言】宏定义(不带参数的宏定义和带参数的宏定义)
目录 一.不带参数的宏定义 1.定义 2.#undef 指令取消宏定义 二.带参数的宏定义 1.定义 2.宏定义参数替换的注意事项 三.带参数的宏定义和带参函数的区别 一.不带参数的宏定义 1.定义 ...
- c语言宏定义可变参数,C语言可变参数宏定义方法
http://blog.csdn.net/skyflying2012/article/details/38436711 2014 在GNU C中,宏可以接受可变数目的参数,就象函数一样,例如: 1 2 ...
最新文章
- 如何成为一个优秀的程序员
- android列表勾选框,android listview实现复选框列表
- R语言dplyr包arrage函数排序dataframe实战:单列排序、多列排序、自定义排序
- 让DJANGO里的get_success_url定义的reverse_lazy带参数跳转
- Java文件流输入输出
- pyecharts中管理工具按钮以及修改图表主题
- 单片机sleep函数的头文件_关于PIC单片机SLEEP指令
- Python Web 框架-Django day06
- 双系统linux分区扩容,Win7 下Ubuntu14.04 双系统无损扩容
- python——识别真实键盘按下模拟键盘按下
- 测试之全流程质量保证
- 仿知乎客户端的白天黑夜主题切换
- php图片不显示怎么处理,如何解决php图片因存在错误而无法显示
- 让人眼花缭乱的视错觉,太酷炫了!
- ORA-01029,ORA-01033错误处理
- JSON转换JAVA对象
- 在线计算机长度,长度单位在线换算器
- 【rmzt:动漫俺修罗酷爱主题】
- 使用Python玩转ROS2参数
- Android打开WIFI、关闭WIFI、检测当前WIFI状态