Есть похожий кусок кода:
typedef struct a {
int x1;
int x2;
} a;
typedef struct b {
struct a ra;
double y1;
double y2;
} b;
struct a mya, mya2;
struct b myb;
И несколько вопросов по этому примеру:
1. На самом деле структур больше и они вложенные. Есть какой-либо способ обойти обращение к элементам вложенной структуры при условии, что имена элементов во всех структурах разные? То есть хотелось бы иметь возможность делать myb.x1=5, а не myb.ra.x1=5
Хорош ли такой вариант:
typedef struct b {
int x1;
int x2;
double y1;
double y2;
} b;
Спрашиваю про вариант выше, потому что еще необходимо копировать содержимой вложенной структуры во внешнюю, не вллженную.
Пример для старого кода:
mya=myb.ra;
Пример для нового кода:
memcpy(&mya, &myb, sizeof(struct a));
Насколько _портируемо_ такое решение на 32/64 бита и разные платформы?
2. Этот вопрос не простой для меня. Как быстрее копировать структуры: через mya=mya2 или memcpy(&mya, &myb, sizeof(struct a))?
Я просто не очень представляю, как компилятор поступит со стуктурами с большим количеством элементов, будет ли он генерировать код более медленный чем в случае с memcpy? Или memcpy всегда проще и удобнее?
Похожие темы
- Форум [СИ] структуры, массивы и sizeof(). (2010)
- Форум Использование С-шных стуктур нефиксированной длинны в C++ (2021)
- Форум Небольшой вопрос по си и GCC - malloc для структуры с указателями (2015)
- Форум Очень сильно отличие производительности исполняемого файла в Linux (gcc) и Windows (mingw64) (2017)
- Форум Внутреннее представление объекта зависит от реализации ??? (2019)
- Форум Мы нашли очередную порцию глюков в Linux Kernel (2016)
- Форум V4L2: ошибка удаления буфера из очереди: недопустимый аргумент (2023)
- Форум Структура файловой системы ext4. Несколько вопросов (2014)
- Форум Структура? (2013)
- Форум Локальная структура (2013)