需要将参数传递给dev_err宏

时间:2013-06-21 00:58:10

标签: c

有一个包装函数 xxxTRACE(uint loglevel,const char * message,...),需要检查loglevel值并使用 dev_err,dev_warn和... macros 。因为ex: dev_err 签名是 dev_err(struct device * dev,char * fmt,args ...),我能够传递消息字符串而没有任何错误,但无法传递参数,尝试传递 dev_err(dev,message,...) dev_err(dev,message,__ VA_ARGS __),收到错误“在'...'之前的预期表达“。请告诉我如何传递参数。谢谢: - )

2 个答案:

答案 0 :(得分:0)

这与printf的签名相同。您以相同的格式传递消息:例如:

dev_err("Hello World\n");
dev_warn("I'm getting old, I'm now: %d years old", my_age);

`

答案 1 :(得分:0)

我通常在__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)