私はC++用のツリーベースのデバッグ/ロギングシステムを構築しています。グローバルアドレスでオブジェクトアドレスまたはNULLを取得する統一方法
「ユーザーインターフェイス」は、ユーザー定義のメッセージと呼び出しサイトの情報(ファイル、行、オブジェクトアドレス)を特別な機能に渡し、ログを実行するマクロです。
この関数はオブジェクトアドレスを使用してオブジェクトインスタンスごとにメッセージをグループ化します。
現在のところ、それは次のようになります。私はNULL
代わりのthis
が定義されていないthis
を(取得する(msg
マクロで使用可能)何らかの統一的な方法があり、聞きたい
// in logging system header
#define msg (event_level, message) \
do_logging_ (event_level, __FILE__, __LINE__, this, message)
...
// in code
msg (MSG_WARNING, "some text");
グローバル/静的関数)?
(コンパイラが分かる限り)このコードは関数の外に出現することもあります。式は、グローバル変数の初期化子や静的constクラスのメンバのためのクラス内で使用されたときに、グローバルスコープで現れることがあります。 – MSalters