有一个记录日志的函数,想用宏定义进行包装,简化调用方法,但是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语言 如何在宏定义中使用可变参数相关推荐

  1. python函数定义中没有对参数指定类型、这说明_二级单选-函数和代码复用

    . i. .w. 1 关于递归函数的描述,以下选项中正确的是 A 函数部包含对本函数的再次调用 B 函数比较复杂 C 包含一个循环结构 D 函数名称作为返回值 正确答案: A 2 关于递归函数基例的说 ...

  2. python函数如何实现可变参数_【已解决】Python中实现可变参数的函数

    [问题] Python中,希望实现一个可变参数的函数. [解决过程] 相关代码如下:(extractOK, extractedBlogUser, generatedBlogEntryUrl) = ca ...

  3. Java请求参数检查,Java如何检查servlet请求中是否存在参数?

    ServletRequest或HttpServletRequest对象具有用于映射参数名称及其值的映射对象.通过访问此映射,我们可以检查servlet请求中是否传递了参数.让我们看下面的例子.pack ...

  4. java 多参数函数调用_如何使用Fable定义和调用多参数函数

    真的厌倦了尝试定义F#和Fable理解然后试图调用它的类型 . 现在我创建了一个名为JSI.js的JavaScript文件: /** * JavaScipt Interop to call compl ...

  5. aux 参数 linux,Linux下ps aux命令中STAT的参数含义(转)

    $ ps aux USER           PID %CPU %MEM   VSZ   RSS  TT  STAT STARTED      TIME COMMAND root           ...

  6. 【转载】c语言中的可变参数编程

    在c语言中使用变长参数最常见的就是下面两个函数了: int printf(const char *format, ...);int scanf(const char *format, ...); 那他 ...

  7. c程序语言符号的作用,c语言宏定义中的#,##,#@及\符号的作用

    1.#(stringizing)字符串化操作符 作用:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串.其只能用于有传入参数的宏定   义中,且必须置于宏定义体中的参数名前. 如: #def ...

  8. c语言tab什么意思_C语言入门学好这一篇就足够了!C语言所有的知识点

    全球最大的C/C++人员聚集地就在我这里,企鹅裙搜索直播编程学习,[14]就是我的.不管你是什么基础,来了就是兄弟,是兄弟就跟我一起学习C/C++!关注我,为编程点赞,每天学点小知识!工作需要学习C/ ...

  9. python默认参数 可变对象_最小经验原则(POLA)与可变默认参数

    题目 任何长时间学习Python的人都会遇到下面的问题. def foo(a=[]): a.append(5) return a Python初学者期望这个函数总是会返回一个只包含一个元素的列表:[5 ...

最新文章

  1. 如何保证工业相机工作的精准与稳定?
  2. redis的数据结构||1) 字符串类型2) 哈希类型3) 列表类型4) 集合类型 5) 有序集合类型详解
  3. 数据库路由中间件MyCat - 源代码篇(7)
  4. 单行文字不断向上滚动特效
  5. VBScript在服务器上创建目录
  6. css实现loading,CSS3 19种LOADING(加载)动效
  7. matlab水蒸气焓值计算_焓变 反应热-化学选修4同步优质系列教案(人教版)
  8. C++实践參考——二进制文件浏览器
  9. 微信支付JAVA DEMO 微信支付爬过的坑
  10. Labview2019安装
  11. c语言字符串的加减乘除,c语言加减乘除代码
  12. Android中自定义农历日历,Android实现自定义日历
  13. 服务器主机是什么系统版本,服务器主机是什么系统
  14. Y9000P 2022独显直连
  15. 使照片带有妙的电影色彩55款工具套件的lr微妙的电影调色预设
  16. 机器视觉 · 工业光源
  17. MSDC 4.3 接口规范(29)
  18. 从乐清女孩发出救命信息后殒命想到,微信滴滴应增加SOS求救功能
  19. dubbo之SPI Wrapper分析
  20. 基于tensorflow的ResNet50V2网络识别动物

热门文章

  1. 一文带你了解微软推出的Microsoft Designer AI设计工具
  2. 不选考408了!而且计算机不考数学!双非武汉纺织大学招生目录变化
  3. w ndows10专业版连接不上网,windows10无线网络连不上的原因与应对方法
  4. 哈夫曼树(Huffman树) 学习日记 + 例题(ch1701 bzoj4198)
  5. 解答:EasyDSS视频点播时音频是否可以设置为默认开启?
  6. c语言自动排序函数,C语言快速排序函数用法(qsort)
  7. python 随机森林调参_python的随机森林模型调参
  8. 使用的一些支持swift3.0的开源库
  9. 手机chrome书签文件导出教程
  10. TP-LINK路由端口映射图文教程 【路由器建主】