c - 如何检查可变参数 __VA_ARGS__ 的有效性?

标签 c variadic-macros

我想定义一个宏,例如 -

#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/

相关文章:

c - 如何从头文件 C 中声明的结构打印值(高度/宽度)

c++ - 在嵌入式系统的 C++ 中对有效和无效数字的数组进行排序

c++宏导入基模板类的所有名称

检查参数是否在 C 中的可变参数宏中传递

c++ - 为什么我的可变参数宏不能正确接受任何参数?

c - 为什么此 C 代码仅打印输入的第一个和最后一个节点?

c - 我想搜索并显示一个 “contact”的信息,但是没有用

c++ - 字符串化 __VA_ARGS__ (C++ 可变参数宏)

c++ - 如何使用宏打印可变数量的参数?

c - 将 PSRAM 写入 EZ Flash 3 合 1