我想定义一个宏,例如 -
#define log(lognumber,...) logreport(lognumber,__VA_ARGS__)
我想检查 __VA_ARGS__
用户调用 log() 时可以传递的参数的异常情况。请为我提供 __VA_ARGS__
的异常情况。
[评论更新:]
我的意思是我想以这样的方式编写日志报告,它应该打印我已经定义的错误的特定数字。
举个例子,比如我通过了
log(NOTE,"%s",str)
然后在这种情况下,它会打印我在另一个文件中分配的特定 ID,例如 msgid %s, msdstr %s (10223)
,但用户使用
log(NOTE,"DIRECT STRING")
它确实采用 [???] 来表示该字符串。那么我如何检查用户是否以这种方式传递参数
log(NOTE,"%s",str)
或
log(NOTE,"direct string")
在 logreport 函数中这样吗?
最佳答案
So how would I check that if user is passing an argument
就目前情况而言,唯一的方法是解析第二个参数以判断是否出现某些转换说明符,例如 "%s"
。
关于c - 如何检查可变参数 __VA_ARGS__ 的有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30237179/