Понадобилось, вот, решить доольно трудную программистскую задачку: есть ОГРОМНАЯ сишная структура (до девяти уровней вложенности). Собс-но нужно: ссылку или исходник программы, которая строит таблицу смещений для полей этой структуры (крайне желательно учитывать и выравнивание, однако, учитывая сложность задачи - это не обязательно). Должно быть что-то вроде этого:
На входе:
(agreed @ Пятница, 08 Июля 2005, 0:51) писал(а):Понадобилось, вот, решить доольно трудную программистскую задачку: есть ОГРОМНАЯ сишная структура (до девяти уровней вложенности). Собс-но нужно: ссылку или исходник программы, которая строит таблицу смещений для полей этой структуры (крайне желательно учитывать и выравнивание, однако, учитывая сложность задачи - это не обязательно). Должно быть что-то вроде этого:
На входе:
Ну в голову с бухты барахты пришел такой костыль - пишем на питоне ( и чем угодно) тулзу, которая на выходе формирует сишный исходник, в котором для каждого члена заданной структуры выводит в консоль его sizeof(aa) + offset. Offset растет с каждым членом. (в начале ноль и т.д.) Далее скармливаем это gcc и смотрим результат. Ну как?
Я написал как определить offset внутри структуры просто и безболезненно, а вот как написать скриптец... Пусть bash-ологи, perl-оводы и укротители python-ов подскажут ^_^
В каждом из нас спит гений... и с каждым днем все крепче...