Здравствуйте Фатыхов михаил Хамитович, вы писали:
ФМХ>Наверное многие сталкивались с такой проблемой:
ФМХ>Необходимо при компиляции определить что за функция в данный момент компилирируется (например для всевозможных логов ошибок, try...catch, MessageBox и др). Естественно можно написать:
ФМХ>void SomeFunc()
ФМХ>{
ФМХ>#define FUNC_NAME "SomeFunc";
ФМХ> try
ФМХ> {
ФМХ>.
ФМХ>.
ФМХ>.
ФМХ> }
ФМХ> catch(...)
ФМХ> {
ФМХ> MessageBox( 0, "Error in " FUNCNAME, "Error", MB_OK );
ФМХ> }
ФМХ>}
ФМХ>но мягко говоря это напрягает...
ФМХ>Thanks
есть такие предопределённые макросы
__LINE__ — The line number in the current source file. The line number is a decimal integer constant. It can be altered with a #line directive.
__FILE__ — The name of the current source file. __FILE__ expands to a string surrounded by double quotation marks.
конечно это не имя функции, но по имени файла и номеру строки функцию всегда можно отыскать, к тому же через пару раз Вы будете уже помнить все проблемные места наизусть :) ... для вывода отладочной информации очень удобно использовать OutputDebugString и тулзу для просмотра этого DBGVIEW.EXE — можно скачать с
http://www.sysinternals.com/