У меня есть макрос, который передает номер строки и имя файла в качестве обработчика ошибок:Поведения __LINE__ в встроенных функциях
#define SYSTEM_FAILURE (error_code, comment) \
System_Failure((error_code), (comment), __LINE__, __FILE__);
Как будет __LINE__
быть решены при использовании внутри встраиваемой функции?
file.h:
inline int divide(int x, int y)
{
if (y == 0)
{
SYSTEM_FAILURE(ENUM_DIVIDE_BY_ZERO, "divide by zero error");
}
return x/y;
}
Будет __LINE__
содержать номер строки в файле заголовка или номер строки исходного файла, в котором встраиваемая функция называется (предполагая, что компилятор делает «вставить» в исходном коде)?
Невозможно попробовать, так как поведение может отличаться в отношении компиляторов и может не соответствовать стандарту. –
Downvoters: Почему downvote? Вопрос возникает из-за использования встроенных функций C и макросов во встроенной системе. –
@Thomas, тестируя это на своем собственном компиляторе и включающий результаты в ваш вопрос (тем самым, более похожим на мой препроцессор, делает это стандартным?) Будет (и все еще может) переводить многие из downvotes. –