2013-12-17 3 views
0

Я намерен вывести список со смещениями всех элементов структуры из typedef struct.Печать смещений всех элементов структуры

В моем случае эта структура хранится во внешней EEPROM, к которой можно получить доступ через интерфейс, доступный через последовательное соединение.

Чтобы получить доступ к содержимому EEPROM, мне нужно знать смещения элементов структуры.

Как я могу сказать компилятору выполнить задачу offsetof для каждого элемента структуры?

+0

Где находится код? –

+2

[offsetof] (http://man7.org/linux/man-pages/man3/offsetof.3.html) – moeCake

ответ

0

Стандарты C и большинство реализаций C не позволяют автоматически перечислить смещения элементов структуры или выполнить итерацию через элементы структуры. Вы должны либо вручную перечислить элементы структуры, либо написать собственное программное обеспечение для анализа исходного кода, определяющего структуру (и использовать результаты анализа для генерации большего количества кода для отображения смещений).

+0

C++ обеспечит функциональность для итерации через элементы структуры? – user3110467

+0

@ user3110467: № –

+0

#define offsetof (st, m) ((size_t) (& ((st *) 0) -> m)) << этот трюк должен работать в любом случае. – Jekyll

Смежные вопросы