有一个包装函数xxxTRACE(uint,const * message,.),需要检查日志级别的值,并使用dev_err、dev_warn和.宏.由于ex:dev_err签名是dev_err(struct *dev,char *fmt,args.),我能够传递消息字符串而没有任何错误,但无法传递参数,尝试以dev_err(dev,message,.),dev_err(dev,message,__VA_ARGS__),获取错误“在‘.’之前的预期表达式>E 213/code>。请务必让我知道如何传递这些论点。谢谢:-)
发布于 2013-06-20 18:22:02
这是与printf相同的签名。您以相同的格式传递消息:例如:
dev_err("Hello World\n");
dev_warn("I'm getting old, I'm now: %d years old", my_age);
`
发布于 2013-06-21 01:24:04
在__VA_ARGS__
可用的情况下,我通常使用宏。我不太确定哪个C标准支持这一点。它在gnu99中对我有效,在gnu89中可能也适用。
#define xxxTRACE(loglevel, message, ...) do { \
if (loglevel == 0) { \
dev_err(dev, message, __VA_ARGS__) \
} else { \
dev_warn(dev, message, __VA_ARGS__) \
} \
} while (0)
https://stackoverflow.com/questions/17226154
复制相似问题