Я не планирую использовать библиотеку 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;
Код: Выделить всё
gcc -E -P -xc test.h -o test.preprocessed.h
Код: Выделить всё
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