Глубокая копия структуры в другую - PullRequest
4 голосов
/ 28 февраля 2012

У меня есть struct, который содержит строки и указатель внутри. Существуют ли какие-либо библиотечные функции, позволяющие сделать глубокую копию struct в другую. Я не хочу делать поле за копией поля, так как структура у меня довольно большая.

Есть ли у glib какая-нибудь функция, которая делает трюк?

Ответы [ 2 ]

6 голосов
/ 28 февраля 2012

Нет.Функция общего назначения не сможет узнать структуру вашей структуры (т.е. информацию, которая доступна только во время компиляции).И даже если бы он это сделал, как бы он узнал, что представляет собой «глубокую копию» при любых обстоятельствах?

4 голосов
/ 28 февраля 2012

Вы можете использовать memcpy или memmove, чтобы скопировать все содержимое самой структуры.Однако, поскольку C не имеет самоанализа, копирование указанных объектов не может быть выполнено функцией общего назначения.

Отредактировано для добавления: Как отмечают несколько комментаторов, вы можете просто назначить структуры другим структурам в Cдиалекты используются последние пару десятилетий, memcpy больше не нужен.

...