Как pycparser читает файлы заголовков, включенные в файлы кода C?

Я пытаюсь проанализировать файл C с помощью pycparser. Мне любопытно знать, что при предварительной обработке C-файла pycparser читает только те библиотечные файлы, которые предоставлены в папке fake lib (если вы указали путь fake lib в cpp_args), или он также читает из места, указанного в include заявления, такие как
в строке ниже

#include<folder1/folder2/xyz.h>  

где pycparser будет искать xyz.h только в папке FAKE LIB?

1 ответ

Решение

Он будет искать другие каталоги, кроме поддельной папки. Если вы посмотрите в файле pycparser/__init__.pyвы найдете функцию под названием preprocess_file который вызывает препроцессор C для вашего входного файла и помещает полученный результат в строку, которую затем передает следующей функции с именем parse_file, Код в каждой из этих функций довольно ясен и хорошо прокомментирован, поэтому прочитайте его и посмотрите, имеет ли это смысл.

Поддельная папка включена только для стандартных библиотечных заголовков, таких как stdlib.h, stdio.h и так далее. Эти заголовки часто содержат непереносимые специфичные для компилятора расширения; Скорее всего, вам нужно только знать, что есть функция printf(...) для того, чтобы иметь возможность анализировать ваш код.

Другие вопросы по тегам