我希望爲我正在處理的項目在日誌文件系統中添加一些功能。對於我的LogError()
調用,我想包含發生錯誤的函數。我想知道是否有一種方法可以訪問名爲LogError()
的函數,因此我可以通過編程訪問該信息以將其添加到日誌。我可以通過編程訪問調用函數的名字嗎?
例如:
bool Engine::GraphicsManager::Initialize(const HWND i_hWindow_main)
{
if (!InitializeWindow(i_hWindow_main))
{
Engine::LogManager::Instance().LogError(L"GraphicsManager::Initialize - Unable to initialize graphics window");
return false;
}
Engine::LogManager::Instance().LogMessage(L"Graphics window initialized successfully");
/* SNIP */
initialized = true;
return true;
}
在上面的例子,我想LogError()
能夠確定它是從GraphicsManager::Initialize()
和輸出調用(至少部分),該函數的名稱,而不是把那無處不在。
編輯:我應該提到,我LogError()
功能(和其他記錄功能)基本上包裝器vfwprintf_s()
,使他們能夠採取可變長度參數列表。雖然我喜歡「使用宏觀」建議,但我不確定如何解決這個潛在問題(這可能是另一個問題)。
這是還是合理/可能嗎?
謝謝!
更新我原來的職位說,我需要處理可變長度參數列表。我不太熟悉將宏用於更復雜的任務。這仍然可以完成額外的警告? – chaosTechnician 2011-01-30 01:37:34