GCC - Структура, определяющая элементы в определенных смещениях

Есть ли способ в gcc, где я мог бы определить структуру с конкретным членом в определенном смещении?

Я хочу определить структуру следующим образом:

struct {
.offset(0xDC) //or something equivalent
   int bar;
} foo;

а затем следующий оператор:

int a = foo.bar

будет идентичен оператору:

int a = *(int*)((char*)&foo + 0xDC);

* UPDATE *

Немного предыстории: Я хочу получить доступ к элементам в экспортированной структуре, у меня нет правильного определения, у нее много членов, которые Меня интересуют лишь некоторые из них, и их смещение (исходное определение структуры) немного отличается на каждой целевой платформе (мне нужно скомпилировать свой код для нескольких разных платформ)

Я рассмотрел вариант заполнения, упомянутый на комментарии здесь, но это требует, чтобы я выполнял некоторые раздражающие вычисления каждый раз, когда я хочу добавить член. например:

strcut {
.offset(0xDC)
    int bar;
.offset(0xF4)
    int moo;
}foo;

проще, чем:

struct __attribute__ ((__packed__)) struct {
   char pad1[0xD8];
   int bar;
   char pad2[0x18];
   int moo;
}foo;

и это без учета того факта, что sizeof (int) может меняться от платформы к платформе

8
задан t_z 23 November 2011 в 08:57
поделиться