Нет, но вы можете сделать что-то несколько эквивалентное, создав смещение строки:
int func(char *s)
{ static const int begin_line = __LINE__;
#define func_line (__LINE__ - begin_line)
/* ... */
printf("%s():%d\n", __func__, func_line);
}
Вывод:
fun c (): 3
Обратите внимание, что значение begin_line
, расположенное на той же строке, что и скобка, имеет важное значение. Если вам нужны строковые индексы, начинающиеся с нуля, добавьте новую строку.
В C ++ вы можете использовать constexpr
вместо static const
для оценки времени компиляции begin_line
.