不定参的宏定义使用
来源:互联网 发布:最优化理论与算法课件 编辑:程序博客网 时间:2024/06/05 15:20
什么是不定参
函数中的参数个数可以不固定,比如printf()函数可以一次输出若干个变量的值,这种情况就叫做不定参函数。
不定参的使用
//test.h#include<stdio.h>#include<stdarg.h>void writeLog(int line,const char *fromat, ...){ va_list args; static char logText[MAXLOGSIZE] = { 0 }; //获取日志信息 va_start(args, fromat); PrintfLog(fromat, args, logText); va_end(args); //将日志信息输出到日志文件和控制台 sprintf(text, "[%d行] %s\n", line, logText); printf("%s\n", text);}//不定参打印static void PrintfLog(const char * fromat, va_list args, char *dst){ int d; char c, *s; while (*fromat) { if (*(fromat - 1) == '%') { switch (*fromat) { case 's': s = va_arg(args, char *); strcat(dst, s); break; case 'd': d = va_arg(args, int); char str[255]; sprintf(str, "%d", d); strcat(dst,str); break; case 'c': c = (char)va_arg(args, int); dst[strlen(dst)] = c; break; default: if (*fromat != '%'&&*fromat != '\n') dst[strlen(dst)] = *fromat; break; } } else { if (*fromat != '%'&&*fromat != '\n') dst[strlen(dst)] = *fromat; } fromat++; }}
#include<test.h>int main(){ writeLog(__LINE__, "%s:%d", "测试", 2);//__LINE__表示当前代码行数 getchar(); return 0;}
运行结果:
可以看出成功打印出了传进函数的两个参数。
不定参的宏定义使用
#define LOG(s,...) (writeLog(__FILE__,__LINE__,s,##__VA_ARGS__))//__FILE__表示当前所在的文件的路径// 如果你在宏调用时,确实提供了一些可变/参数,它会把这些可变参数放到逗号的后面。如果没有’##’操作将使预处理器去除掉它前面的那个逗号。使其仍可正常工作。
0 0
- 不定参的宏定义使用
- C语言宏定义中##,#,#@,\,不定参的用法
- 如何定义不定参数的宏
- 宏函数的不定参
- 不定参数的使用
- 不定参数的使用
- 如何定义不定参数的函数
- 函数不定参数的定义与解析
- 不定(个数)参数的使用
- 程序调试信息的输出__FILE__,__LINE__,不定参数的宏定义
- 程序调试信息的输出__FILE__,__LINE__,不定参数的宏定义
- 程序调试信息的输出__FILE__,__LINE__,不定参数的宏定义
- 不定参函数使用纪要
- 不定参宏
- java 泛型使用和不定参数函数定义
- 不定参数的宏 函数
- C/C++宏定义中带不定参数
- C、C++不定参数的使用
- 欢迎使用CSDN-markdown编辑器
- TensorFlow安装:win7安装(非docker)
- unity3D-游戏/AR/VR在线就业班 蓝鸥C#入门接口学习笔记
- mac下的apk反编译
- SQL CHARINDEX 函数、InStr 函数、PATINDEX 函数、stuff函数
- 不定参的宏定义使用
- groovy 导致的PermGen fullGC 解决
- 【日常】Caffe编译"gpu/mxGPUArray.h" Not Found错误解决
- 使用超链接传递汉字,编码解码之后出现的问题
- 不再更新和使用此博客
- Oracle数据导入导出imp/exp sp2-0734:未知的命令开头'imp 忽略了剩余行默认分类 解决办法 sp2-0734:未知的命令开头'imp 忽略了剩余行默认分类 应该是在c
- java 内在锁(intrinsic lock)或者监视器锁(monitor lock)
- 返回一个整数的立方
- Phoenix学习笔记 --- phoenix支持的数据类型