Я пытаюсь добавить вызов API к моему приложению C
/C++
. В дополнение к его работе он также должен вернуть имя файла и строку кода, из которой он был вызван.
Я понял, что функция assert(condition)
C
делает то же самое. После того, как condition
является ложным, assert
нарушает выполнение и сообщает имя файла и строку, где утверждение условия не выполнено. Как assert
находит имя и строку кода, из которой вызывается внешняя функция assert
?
Он делает это, используя макросы, такие как __FILE__
и __LINE__
, см. Здесь (для gcc) и здесь (vs).
Вы можете просмотреть исходный файл для assert.h
здесь
assert
- это макрос, а не функция.__FILE__
__LINE__
стандартные макросы__FILE__
и__LINE__
.