Определить функции C (открывающие и закрывающие скобки) в файле

1

У меня есть файл C, в который я хотел бы добавить печать в начале и конце каждой функции, которая включает имя файла, имя функции и номер строки. Я пытаюсь автоматизировать это для всей папки файлов C с помощью python.

Пример: для добавления функции в файл math.c

int add(int a, int b){
   sum = a +b;
   return sum;
}

Я бы хотел, чтобы файл результатов выглядел примерно так:

int add(int a, int b){
   printf("Math.c, add, 12");
   sum = a +b;
   return sum;     
}

Я рассматриваю регулярное выражение, как предлагается в этой ссылке. Использование Python Regex для поиска функции C в файле

Любые другие предложения? Ctags - это еще один вариант, который я изучаю, но я предпочитаю использовать библиотеки python, если они есть для этой цели.

Редактировать:

  • Запуск кода на микроконтроллере
  • Не использовать Linux
  • Отладчик с ограниченными возможностями (может получить только printf)
  • 0
    Почему вы не собираетесь с опцией регулярных выражений? Это должно соответствовать вашей цели (хотя, если вы действительно хотите перехватить все возможные обозначения, вам следует пойти на что-то большее, например, парсер, но я думаю, что это не в этом контексте)
  • 1
    Будет ли использование библиотеки для создания полного AST слишком много? github.com/eliben/pycparser, кажется, может сделать это на чистом python.
Показать ещё 10 комментариев
Теги:

1 ответ

2

Вы можете использовать предопределенные макросы, такие как __file__, __func__ и __line__. Это приведет к общему утверждению printf:

printf("%s, %s, %d\n", __FILE__, __func__, __LINE__)

которые необходимо добавить к каждой функции.

На этот вопрос уже ответили аналогично: напечатайте имя файла, номер строки и имя функции вызывающей функции - C Prog

  • 1
    Имена чувствительны к регистру; файл и строка должны быть в верхнем регистре.
  • 1
    __LINE__ требует %d вместо %s .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню