Powiedzmy, że mam strukturę z 2 polami i implementacją C, która również ma pewne dopełnienie między tymi polami.Czy struktura przypisania gwarantuje, że dopełnienie będzie równe?
Jeśli utworzę dwie zmienne struktury i przypiszę jeden do drugiego, czy dopełnienie będzie gwarantowane jako równe?
Wiem, że dla większości kompilatorów będzie tak (ponieważ po prostu nazywają się memcpy), ale chcę wiedzieć, co jest określone w dopełnieniu w standardzie?
Intencja dla tego pytania to, czy mogę użyć memcmp
, aby sprawdzić równość struktur.
Powiedz, że mam kompilator, który emituje kod, który po prostu przypisuje wszystkich członków struktury zamiast wykonywania memcpy
, czy będzie to poprawna implementacja przypisania operacji struct?
Jesteś zaniepokojony wartościami dopełnienia *, a nie rozmiarami, prawda? –
Na ogół wyściółka nie będzie taka sama. Wygląda na to, że nie został zainicjowany.W przypadku 'x = y', myślę, że czy dopełnienie jest takie samo, czy nie, zależy od implementacji. – BLUEPIXY
@EugeneSh. tak, wartości wypełnienia, Wielkość wypełnienia będzie taka sama, ponieważ są one tej samej struktury. –