Есть ли способ в gcc, где я мог бы определить структуру с конкретным членом в определенном смещении?
Я хочу определить структуру следующим образом:
struct {
.offset(0xDC) //or something equivalent
int bar;
} foo;
, а затем следующее утверждение:
int a = foo.bar
будет идентичным утверждению:
int a = *(int*)((char*)&foo + 0xDC);
* ОБНОВЛЕНИЕ *
Некоторый фон:
Я хочу получить доступ к членам в экспортированной структуре, у которой нет правильного определения, у нее много членов - о которых я забочусь только о нескольких из них, и их смещение (исходное определение структуры) немного отличается на каждой целевой платформе нужно скомпилировать мой код для нескольких разных платформ)
Я рассмотрел вариант заполнения, упомянутый в комментариях здесь, но он требует от меня делать некоторые раздражающие вычисления каждый раз, когда я хочу добавить участника.
например:
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) может изменяться от платформы к платформе