我正在爲C++構建基於樹的調試/日誌記錄系統。在全局函數中獲取對象地址或NULL的統一方法
它的「用戶界面」是一個宏,它將用戶定義的消息和呼叫站點信息(文件,行,對象地址)傳遞給特殊功能,然後執行日誌記錄。
該函數使用對象地址按對象實例對消息進行分組。
目前,它看起來像這樣:
// 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
宏可用),以獲得NULL
,而不是this
其中沒有定義this
(全局/靜態函數)?
理論上(就編譯器可以說),這些代碼也可能出現在函數之外;當在全局變量的初始化器中使用表達式時,表達式可以出現在全局作用域中,甚至可以在靜態常量類成員的類中使用。 – MSalters