Некоторое время назад я нашел информацию об этой функции на SO, но тема была дубликатом Скрытые возможности Visual Studio (2005-2008)? и я больше не могу их найти.
Я хочу использовать что-то вроде этого:
#ifdef DEBUG
#define break_here(condition) if (condition) ... // don't remember, what must be here
#else
#define break_here(condition) if (condition) return H_FAIL;
#endif
//...
hresult = do_something(...);
break_here(hresult != H_OK);
//...
var = do_other_thing(...);
break_here(var > MAX_VAR);
Он должен вести себя как точка останова при ошибке. Это что-то вроде assertion, но без диалогов и более легкое.
Я не могу использовать здесь обычные точки останова, потому что мой модуль является частью нескольких проектов и его можно редактировать в нескольких решениях VS. Это приводит к тому, что точки останова, которые были установлены в одном решении, смещаются где-то в исходном коде, когда код редактируется в другом решении.