Как 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(...)
для того, чтобы иметь возможность анализировать ваш код.