@demoncodemonkey: Тревор задает очень большой вопрос. Почему Эндрю не должен использовать здесь функцию variadic?

многих лет использования большого уродливого макроса MFC ASSERT я наконец решил отказаться от него и создать идеальный макрос ASSERT.

Я в порядке с получением файла и номера строки, и даже выражения, которое не удалось. Я могу отобразить окно сообщений с этими кнопками, а также кнопки Abort / Retry / Cancel.

И когда я нажимаю Retry, отладчик VS переходит на строку, содержащую вызов ASSERT (в отличие от разборки где-то, как некоторые другие функции ASSERT). Так что все это в значительной степени работает.

Но что было бы действительно здорово было быотобразить имя функции, которая не смогла.

Затем я могу решить, следует ли отлаживать его, не пытаясь угадать, в какой функции он находится, из имени файла.

например если у меня есть следующая функция:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   ASSERT(lpCreateStruct->cx > 0);
   ...
}

Затем, когда сработает ASSERT, в окне сообщения отобразится что-то вроде:

Function = CMainFrame::OnCreate

Итак, каков самый простой способ узнать текущее имя функции во время выполнения?

Он не должен использовать MFC или .NET Framework, хотя я использую оба из них.
Он должен быть максимально портативным.

Ответы на вопрос(6)

Ваш ответ на вопрос