Есть ли способ в 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) может меняться от платформы к платформе