2016-03-08 84 views
0

我正在尝试为syslogs编写一个宏,它的公式如下。在syslog中写一个宏C

#define MYLOG_INFO(...) syslog(LOG_INFO, ...) 

并在代码中使用这样的代码。

MYLOG_INFO("use: %s received\n", argv[0]); 

但是,我看到这样的错误。

错误:之前预期的表达式 '...' 令牌

我试图改变的......到__VA_ARGS__

警告:__VA_ARGS__只能出现在C99的扩张 variadic宏

有人可以指点我什么是去的一些提示错了吗? - 提前致谢!

+2

在你的第一个定义中,用'__VA_ARGS__'替换第二个省略号'...',并保留第一个ons。 –

+2

再次阅读警告信息......“'__VA_ARGS__'只能出现在C99可变宏” –

+0

“的扩展***中,非常感谢。它会在替换第二个...之后生效__VA_ARGS_ –

回答

0

我修改它如下,它可以编译没有错误。

#define MYLOG_INFO(args...) syslog(LOG_INFO, ##args) 

您可以试试。