3

C++ 用のツリーベースのデバッグ/ロギング システムを構築しています。

その「ユーザー インターフェイス」は、ユーザー定義のメッセージと呼び出しサイト情報 (ファイル、行、オブジェクト アドレス) を特別な関数に渡し、ログを実行するマクロです。

この関数は、オブジェクト アドレスを使用して、オブジェクト インスタンスごとにメッセージをグループ化します。

現在、次のようになっています。

// in logging system header
#define msg (event_level, message) \
    do_logging_ (event_level, __FILE__, __LINE__, this, message)

...

// in code
msg (MSG_WARNING, "some text");

質問したいのですが、定義されていない場所(グローバル/静的関数)の代わりにmsg取得する統一された方法(マクロで使用可能)はありますか?NULLthisthis

4

2 に答える 2

4

マクロ定義を変更できます。

#define msg (event_level, message, THIS) \
    do_logging_ (event_level, __FILE__, __LINE__, THIS, message)

使用法:

msg (MSG_WARNING, "some text", this); // in member methods
msg (MSG_WARNING, "some text", NULL); // otherwise
于 2011-07-22T12:47:31.677 に答える