#c #parsing #grep #function-call
#c #синтаксический анализ #grep #функция-вызов
Вопрос:
Есть ли надежный способ определить, в каких местах вызывается конкретная функция, и их аргументы в исходном файле c?
В настоящее время я использую следующий код.
fns=$(cat $1 | sed -n -e 's/^.*function_name(//p'|cut -f1,2 -d, --output-delimiter=' '| tr -d ")
Это работает довольно хорошо, но это не скрыто: он сообщит о неправильных результатах, если мое регулярное выражение совпадает с комментариями, строками, макросами, если моя функция вызывается в нескольких строках, …)
Есть ли надежный способ решить мое решение?
—
Примечание: я стараюсь держаться подальше от пользовательских анализаторов, поскольку для их работы требуется обрабатывать удивительно большое количество угловых регистров, поэтому я думаю, что это не самый умный способ решить мою проблему.
Комментарии:
2. Вы пытались сгенерировать перекрестную ссылку компоновщиком и использовать это? В конце концов, он должен знать, какие вызовы он разрешил. Однако это не работает для локальных вызовов модуля, поскольку они немедленно разрешаются компилятором.