Я надеюсь добавить немного функциональности в систему файлов журнала для проекта, над которым я работаю.Для моих вызовов 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()
, поэтому они могут принимать списки аргументов переменной длины.Хотя мне нравятся предложения "использовать макрос", я не уверен, как решить эту потенциальную проблему (что, вероятно, является другим вопросом).
Это все еще разумно / возможно?
Спасибо!