ラッパー関数xxxTRACE(uint loglevel, const char* message, ...)を用意し、loglevel 値を確認して、dev_err、dev_warn、および ... マクロを使用する必要があります。例: dev_err署名はdev_err(struct device *dev, char *fmt, args...)であるため、エラーなしでメッセージ文字列を渡すことができますが、引数を渡すことができず、dev_err(dev, message, ...)、dev_err(dev, message, __VA_ARGS__)、エラー"expected expression before '...'"を取得しています。引数の渡し方を教えてください。ありがとう :-)
2 に答える
0
これは、printf と同じ署名です。メッセージを同じ形式で渡します。例:
dev_err("Hello World\n");
dev_warn("I'm getting old, I'm now: %d years old", my_age);
`
于 2013-06-21T02:22:02.423 に答える
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)
于 2013-06-21T09:24:04.933 に答える