Цитата(AHTOXA @ Nov 16 2013, 23:23)

Вы, вероятно, пропустили моё сообщение на прошлой странице. Там вариант с самой малой кровью.
Прошу прощения, банально позабыл. Пятница была, всё же. :-) Вот куски кода:
Код
struct
{
uint8_t first;
uint8_t second;
uint8_t third;
} TestStruct;
const int16_t TestInteger = 9000;
float TestFloat;
struct
{
const char command; // Номер переменной
const void* addr; // Указатель на переменную, приведённый к void*
const char access; // Доступ к переменной (чтение/запись)
const char len; // Размер переменной (в байтах), и, после '*', количество подобных переменных в массиве/структуре
} const ptable[] =
{
//!PT_BEGIN
{0x00, (void*) &TestStruct, A_R | A_W, 1 * 3}, // "TestStruct"
{0x01, (void*) &TestInteger, A_R, 2}, // (signed) "TestInteger"
{0xF0, (void*) &TestFloat, A_R | A_W, } // (float) "TestFloat or another text"
};
Поскольку указатель на переменную кастуется к
void*, то скрипту надо узнать её тип, и размер. Сейчас они явно указываются в самой структуре и комментарии, но есть вероятность ошибиться, или просто забыть обновить информацию после смены типа переменной, или размера массива. Вот я и захотел это дело автоматизировать. А поскольку лучше компилятора никто не знает, что творится в коде -- отдать эту работу ему.
Ну и просто интересно стало, как же пишутся плагины на кросскомпилятор.
Цитата(klen @ Nov 17 2013, 23:05)

голосую неистово за вариант от AHTOXA
но ради разнообразия предложе еще вариант
после генерации бинаря линкер если ему сказать выплевывает мап файл с указанием всех объектов програмки их адресов и размеров. Ваш скрипт может пройтись по нему и вытащить размеры чего угодно. таким образом автоматически решится вопрос с размерами структур и тп отправляемых по шинке во внешний мир, .... добавили поле , сгенирили бинарь -скрипт опять автоматом прошелся и обновил размнр пакетика...
я бы так сделал бы.
Идея интересная, спасибо. Но в выхлопе
map-файла указывается только общий размер массива/структуры. Есть ли возможность попросить у компилятора более подробную информацию о них? Размеры полей структуры, размер элемента массива.