Я пытаюсь добавить средство отладки в мое приложение, и теперь использую функцию static inline
. Как я узнал из этого ответа , было возможно поместить определение функции static inline
в заголовочный файл, чтобы функция не создавалась дважды, если файл включен несколько раз.
Поэтому мне было любопытно, и я попытался определить аналогичную функцию static inline
для отслеживания вызова и поместить ее в заголовочный файл:
#ifndef TRACE_H
#define TRACE_H
static inline void trace(){
printf("Current line %d, func %s, file %s\n", __LINE__, __func__, __FILE__);
}
#endif //TRACE_H
Я пробовал это, потому что static inline
гораздо менее подвержен ошибкам, чем макрос. Проблема в том, что простой
int main(int argc, char const *argv[])
{
trace();
}
печатает Current line 8, func trace, file /home/somename/include/trace.h
, что явно бесполезно.
Так что для целей трассировки есть какой-то другой способ, кроме определения макроса
#define trace() \
printf("Current line %d, func %s, file %s\n", __LINE__, __func__, __FILE__); \