Можно ли определить номер строки, которая вызывает функцию, без помощи макроса?
Рассмотрим этот код:
#include <iostream>
#define PrintLineWithMacro() \
std::cout << "Line: " << __LINE__ << std::endl; // Line 4
void PrintLine()
{
std::cout << "Line: " << __LINE__ << std::endl; // Line 8
}
int main(int argc, char **argv)
{
PrintLine(); // Line 13
PrintLineWithMacro(); // Line 14
return 0;
}
, который выводит следующее:
Line: 8
Line: 14
Я понимаю, почему каждый печатает, что они делают. Меня больше интересует, можно ли имитировать функцию макроса без использования макроса.