как функция assert возвращает имя файла и строку кода при неудаче [duplicate]

0

Я пытаюсь добавить вызов API к моему приложению C/C++. В дополнение к его работе он также должен вернуть имя файла и строку кода, из которой он был вызван.

Я понял, что функция assert(condition) C делает то же самое. После того, как condition является ложным, assert нарушает выполнение и сообщает имя файла и строку, где утверждение условия не выполнено. Как assert находит имя и строку кода, из которой вызывается внешняя функция assert?

  • 3
    assert - это макрос, а не функция.
  • 5
    ... и (как правило) использует в __FILE__ __LINE__ стандартные макросы __FILE__ и __LINE__ .
Показать ещё 3 комментария
Теги:

1 ответ

3
Лучший ответ

Он делает это, используя макросы, такие как __FILE__ и __LINE__, см. Здесь (для gcc) и здесь (vs).

Вы можете просмотреть исходный файл для assert.h здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню