Мне интересно, есть ли надежный и совместимый со стандартами способ копирования только мембран с определенной позиции в структуре. Например что-то вроде этого
struct A {
char* baz;
int foo;
int bar;
};
void copy(struct A* dst, const struct A* src) {
dst->baz = malloc(1 + strlen(src->baz));
strcpy(dst->baz, src->baz);
memcpy(
((void*)dst) + sizeof(char*),
((void*)src) + sizeof(char*),
sizeof(struct A) - sizeof(char*)
);
}
Это действительно C и не нарушает стандарт? Я знаю, что иногда могут быть некоторые проблемы с выравниванием памяти, я не знаю, относится ли это к этому сценарию.
Второй вопрос - как это сделать, если пропустить более одного элемента, потому что проблемы с заполнением начинают вырасти свои уродливые головы потом