c 语言 宏 可变 参数,C语言 如何在宏定义中使用可变参数
有一个记录日志的函数,想用宏定义进行包装,简化调用方法,但是xlc报如下的错误:void _log(const int level, char* file, int line, const char* fmt, ...){
va_list ap;
int count;
time_t t;
struct tm* st;
char str_time[255];
memset(str_time, 0x00, sizeof(str_time));
time(&t);
st= localtime(&t);
switch(level){
case DEBUG:
fprintf(stdout, "[DEBUG] ");
break;
case INFO:
fprintf(stdout, "[INFO] ");
break;
case WARNING:
fprintf(stdout, "[WARNING] ");
break;
case ERROR:
fprintf(stdout, "[ERROR] ");
break;
default:
fprintf(stdout, "[INFO] ");
break;
}
strftime( str_time, sizeof(str_time), "%Y-%m-%d %H:%M:%S", st);
fprintf(stdout, "[%s] LINE:[%04d] [%s] ", file, line, str_time);
va_start(ap, fmt);
count = vfprintf(stdout, fmt, ap);
fprintf(stdout, "\n");
fflush(stdout);
va_end(ap);
}
#define log_info(...) _log((INFO), (__FILE__), (__LINE__), "", (#__VA_ARGS__))
#define log_err(...) _log((ERROR), (__FILE__), (__LINE__), "", (#__VA_ARGS__))Syntax error at line 71, column 18, file RProCrminfo.cp:
Error at line 71, column 18 in file RProCrminfo.cpdefine log\_info((aaa), ...) \_log((INFO), (\_\_FILE\_\_), (\_\_LINE\_\_), "", (#_\_VA\_ARG
S__))
.................1
PCC-S-02014, Encountered the symbol "(" when expecting one of the following:
) ... an identifier, define, elif, else, endif, error, if,
ifdef, ifndef, include, line, pragma, undef, exec, sql,
begin, end, var, type, oracle,
an immediate preprocessor command, a C token, create,
function, package, procedure, trigger, or, replace,
The symbol ")" was substituted for "(" to continue.
c 语言 宏 可变 参数,C语言 如何在宏定义中使用可变参数相关推荐
- python函数定义中没有对参数指定类型、这说明_二级单选-函数和代码复用
. i. .w. 1 关于递归函数的描述,以下选项中正确的是 A 函数部包含对本函数的再次调用 B 函数比较复杂 C 包含一个循环结构 D 函数名称作为返回值 正确答案: A 2 关于递归函数基例的说 ...
- python函数如何实现可变参数_【已解决】Python中实现可变参数的函数
[问题] Python中,希望实现一个可变参数的函数. [解决过程] 相关代码如下:(extractOK, extractedBlogUser, generatedBlogEntryUrl) = ca ...
- Java请求参数检查,Java如何检查servlet请求中是否存在参数?
ServletRequest或HttpServletRequest对象具有用于映射参数名称及其值的映射对象.通过访问此映射,我们可以检查servlet请求中是否传递了参数.让我们看下面的例子.pack ...
- java 多参数函数调用_如何使用Fable定义和调用多参数函数
真的厌倦了尝试定义F#和Fable理解然后试图调用它的类型 . 现在我创建了一个名为JSI.js的JavaScript文件: /** * JavaScipt Interop to call compl ...
- aux 参数 linux,Linux下ps aux命令中STAT的参数含义(转)
$ ps aux USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root ...
- 【转载】c语言中的可变参数编程
在c语言中使用变长参数最常见的就是下面两个函数了: int printf(const char *format, ...);int scanf(const char *format, ...); 那他 ...
- c程序语言符号的作用,c语言宏定义中的#,##,#@及\符号的作用
1.#(stringizing)字符串化操作符 作用:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串.其只能用于有传入参数的宏定 义中,且必须置于宏定义体中的参数名前. 如: #def ...
- c语言tab什么意思_C语言入门学好这一篇就足够了!C语言所有的知识点
全球最大的C/C++人员聚集地就在我这里,企鹅裙搜索直播编程学习,[14]就是我的.不管你是什么基础,来了就是兄弟,是兄弟就跟我一起学习C/C++!关注我,为编程点赞,每天学点小知识!工作需要学习C/ ...
- python默认参数 可变对象_最小经验原则(POLA)与可变默认参数
题目 任何长时间学习Python的人都会遇到下面的问题. def foo(a=[]): a.append(5) return a Python初学者期望这个函数总是会返回一个只包含一个元素的列表:[5 ...
最新文章
- 如何保证工业相机工作的精准与稳定?
- redis的数据结构||1) 字符串类型2) 哈希类型3) 列表类型4) 集合类型 5) 有序集合类型详解
- 数据库路由中间件MyCat - 源代码篇(7)
- 单行文字不断向上滚动特效
- VBScript在服务器上创建目录
- css实现loading,CSS3 19种LOADING(加载)动效
- matlab水蒸气焓值计算_焓变 反应热-化学选修4同步优质系列教案(人教版)
- C++实践參考——二进制文件浏览器
- 微信支付JAVA DEMO 微信支付爬过的坑
- Labview2019安装
- c语言字符串的加减乘除,c语言加减乘除代码
- Android中自定义农历日历,Android实现自定义日历
- 服务器主机是什么系统版本,服务器主机是什么系统
- Y9000P 2022独显直连
- 使照片带有妙的电影色彩55款工具套件的lr微妙的电影调色预设
- 机器视觉 · 工业光源
- MSDC 4.3 接口规范(29)
- 从乐清女孩发出救命信息后殒命想到,微信滴滴应增加SOS求救功能
- dubbo之SPI Wrapper分析
- 基于tensorflow的ResNet50V2网络识别动物
热门文章
- 一文带你了解微软推出的Microsoft Designer AI设计工具
- 不选考408了!而且计算机不考数学!双非武汉纺织大学招生目录变化
- w ndows10专业版连接不上网,windows10无线网络连不上的原因与应对方法
- 哈夫曼树(Huffman树) 学习日记 + 例题(ch1701 bzoj4198)
- 解答:EasyDSS视频点播时音频是否可以设置为默认开启?
- c语言自动排序函数,C语言快速排序函数用法(qsort)
- python 随机森林调参_python的随机森林模型调参
- 使用的一些支持swift3.0的开源库
- 手机chrome书签文件导出教程
- TP-LINK路由端口映射图文教程 【路由器建主】