Предположим, у меня есть следующая структура (в C):
struct my_struct {
int foo;
float bar;
char *baz;
};
Если у меня теперь есть переменная, скажем
struct my_struct a_struct;
Как я могу узнать, как поля этой структуры будут расположены в памяти? Другими словами, мне нужно знать, какими будут адреса a_struct.foo
, a_struct.bar
и a_struct.baz
. И я не могу сделать это программно, потому что на самом деле я кросс-компилирую на другую платформу.
ПОЯСНЕНИЯ
Спасибо за ответы, но я не могу сделать это программно (то есть с макросом offsetof
или с небольшой тестовой программой), потому что я кросс-компиляция и мне нужно знать, как будут выровнены поля на платформе target . Я знаю, что это зависит от реализации, вот и весь смысл моего вопроса. Я использую GCC для компиляции, ориентируясь на архитектуру ARM.
В конце концов мне нужно иметь возможность выгружать память с целевой платформы и анализировать ее с помощью других инструментов, таких как библиотека struct
Python. Но для этого мне нужно знать, как были разбиты поля.