Если у меня есть что-то вроде этого в моем коде:C присвоение структуры одного и того же адреса действительна?
void f(struct foo *x, struct foo *y)
{
*x = *y; // structure copy (memcpy?)
}
Если х и у точки на тот же адрес, что происходит?
Этот код действителен, и что, если компилятор преобразует присвоение в вызов memcpy с потенциально-недопустимыми операндами (им не разрешено перекрываться)?
[Да, я знаю, что я могу использовать «ограничение» в этом случае, но фактический код, который мы нашли, который заставлял нас считать это, автоматически генерируется бизоном, поэтому нам было интересно, если он всегда будет действительным и будет ли компилятор следует использовать memmove или что-то еще, что позволяет перекрывать ..]
Нет необходимости делать чек. –
Свергнуть, обет. –