0

ラッパー関数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 '...'"を取得しています。引数の渡し方を教えてください。ありがとう :-)

4

2 に答える 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 に答える