Является ли CFFI адекватным инструментом для анализа определений C из заголовочного файла?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Является ли CFFI адекватным инструментом для анализа определений C из заголовочного файла?

Сообщение Anonymous »

Я хочу прочитать подробную информацию о структурах/массивах/перечислениях, описанных в заголовках C (я хочу получить список определенных типов, список и типы членов структуры, имена и значения, определенные в перечислениях, размер массивов и т. д.).
Я не планирую использовать библиотеку C в Python, но я хотел использовать проверенный инструмент для «анализа» определений C, поэтому я выбрал CFFI и попробовал следующее:
Начните с фиктивного файла test.h

Код: Выделить всё

typedef struct {

int a;
int b[3];
float c;

} other_struct_T;

typedef struct {

bool i;
bool j;
other_struct_T k;

}  main_struct_T;
предварительно обработайте его один раз, чтобы быть уверенным в разрешении #includes, #defines и т. д.

Код: Выделить всё

gcc -E -P -xc test.h -o test.preprocessed.h
Затем загрузите его с помощью CFFI с помощью этого

Код: Выделить всё

from pathlib import Path
from cffi import FFI

u = FFI()
txt = Path("test.preprocessed.h").read_text()
u.cdef(txt)
k = u.typeof("main_struct_T")
print(k)
print(k.relements)
который печатает первым.
Но не удается на втором (и k, похоже, не содержит ни .length, ни .item, ни .elements, как и следовало ожидать от экземпляра ctype...)

Код: Выделить всё

Traceback (most recent call last):
File "./parse_header.py", line 14, in 
print(k.relements)
^^^^^^^^^^^
AttributeError: relements
Чего мне не хватает? Как бы вы сделали это по-другому?

Подробнее здесь: https://stackoverflow.com/questions/791 ... eader-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»