デスクトップでLinuxアプリケーションを実行していて、syslog()呼び出しをprintf()呼び出しにリダイレクトしたいと思いました。
注:通話を置き換えるのではなく、リダイレクトするだけです
だから私はこれを行うためにいくつかのコードを書きました:
#ifndef EMBED
#define syslog(level, stuff) printf("SYSLOG: %s\n", stuff)
#endif
私がそれを使用していた1つのファイルでうまく機能します。これを新しいファイルに移動し、エラーが発生しました:
error: macro "syslog" passed 3 arguments, but takes just 2
エラーは、新しいファイルの呼び出しが混在しているため、syslogに2つの引数を使用しているもの、3つを使用しているものがあることを知っています。また、可変引数リストを介してこれをリダイレクトする必要があることも知っていますが、これをどのように正確に行うのですか?まだ動作していません...
私が理解しているように、syslog()とprintf()は次のようになります。
void syslog(int priority, const char *format, ...)
int printf(const char *format, ...)
だから私は試しました:
#define ERR 3
#ifndef EMBED // This is not defined in my env, btw
#define syslog(pri, fmt, ...) printf(fmt, ...)
#endif
...
void main() {
...
syslog(ERR, "test");
しかし、それはエラーを与えます:
error: expected expression before ‘...’ token
このマクロの外観/使用方法に関する提案はありますか?