2015-05-14 44 views
0

我想定义诸如宏 -如何检查可变参数__VA_ARGS__有效性?

#define log(lognumber,...) logreport(lognumber,__VA_ARGS__) 

我想检查异常情况下__VA_ARGS__这些参数用户当用户呼叫日志可以通过()。请提供给我的异常情况进行__VA_ARGS__


[更新自评:]

我的意思是,我想以这样的方式,它应该打印特定数量的,我已经定义的错误logreport写。

以一个例子一样,如果我传递

log(NOTE,"%s",str) 

然后在它打印,我在这样msgid %s, msdstr %s (10223)另一个文件分配了特定ID的情况下,但用户使用

log(NOTE,"DIRECT STRING") 

它确实需要[???]作为该字符串。所以,我怎么会检查,如果用户传递一个参数这样

log(NOTE,"%s",str) 

log(NOTE,"direct string") 

这种方式logreport功能?

+2

你说的“异常情况”是什么意思?你究竟想要达到什么目标? – cnicutar

+0

只写代码的logreport功能使用标准的'va_start','va_arg'和'va_end'宏对变量ARGS操作做检查。至少这是我认为你所要求的答案。但是你的问题并不十分清楚:“__VA_ARGS__'的例外情况”在没有解释这意味着什么的情况下不是一个有意义的术语。 – kaylum

+0

如果我读这正确的(我不知道我这样做),你可能有兴趣在http://stackoverflow.com/questions/2124339/c-preprocessor-va-args-number-of-arguments – Wintermute

回答

0

那么我将如何检查,如果用户传递一个参数

目前的情况是唯一的办法是解析第二个参数像"%s"一些转换说明的occurency。