type-punning

Jaka jest ścisła zasada aliasingu?

Pytając o powszechne, nieokreślone zachowanie w C, dusze bardziej oświecone niż ja odwołałem się do ścisłej zasady aliasingu. O czym oni mówią?

Cel połączenia w C i C++

Korzystałem już wcześniej, dziś zaniepokoiłem się czytając ten post i dowiedziałem się, że ten kod union ARGB { uint3 ... ndardu C++. wprowadzenie dziedziczenia jako funkcji języka C++ . Z tego powodu odpowiedź Andreya pozostaje nadal akceptowana.

Czy typowanie przez Unię jest nieokreślone w C99, a czy stało się określone w C11?

Liczba odpowiedzi na pytanie o przepełnienie stosu uzyskanie bitów pojedynczej precyzji IEEE dla float sugeruje użycie struk ... wydaje się to wspierać, ale byłoby miło wiedzieć, czy jest to określone w standardzie, czy tylko bardzo częste rozszerzenie.

Związki zawodowe i typowanie

Szukałem od jakiegoś czasu, ale nie mogę znaleźć jasnej odpowiedzi. Wiele osób twierdzi, że używanie związków do pisania Kal ... wiedzieć I C. W szczególności używam unions do konwersji pomiędzy floatami a surowym hexem do wysyłania przez magistralę CAN.

Aliasing T * z znakiem * jest dozwolony. Czy jest dozwolone również na odwrót?

Uwaga: to pytanie zostało zmienione i zredukowane, aby było bardziej skoncentrowane i czytelne. Większość komentarzy odnosi ... pozwolił na odwrót. Na przykład: char * c = read_socket(...); unsigned * u = reinterpret_cast<unsigned*>(c); // huh?

wyrównana pamięć masowa i ścisłe aliasowanie

Obecnie używam aligned_storage, aby zaimplementować "opcjonalny" Typ podobny do boost:: opcjonalny. Aby to osiągnąć mam takie ... li to możliwe, czułbym się lepiej, gdybyś mógł podać odniesienie do standardu w swojej odpowiedzi (pomaga mi spać w nocy :P).

Wpisz punning z void * bez łamania surowej reguły aliasingu w C99

Ostatnio natknąłem się na ścisłą regułę aliasingu, ale mam problem ze zrozumieniem, jak używać void * do wykonywania typowani ... wany zarówno przez x, jak i dereferenced y. Jeśli typ-punning jest niezdefiniowany przez void *, jaki jest cel void * w C99?

Opinie na temat typowania w C++?

Jestem ciekaw konwencji typowania wskaźników/tablic w C++. Oto przypadek użycia, który mam w tej chwili: Oblicz prostą 32- ... h Wiem, że działa (mianowicie niepodpisany dostęp do pamięci i założenia kompilatora na pointerze aliasing). Co byś polecił?

bitów float i ścisłego aliasingu

Próbuję wyodrębnić bity z floata bez wywoływania niezdefiniowanego zachowania. Oto moja pierwsza próba: unsigned foo(float ... requirement<sizeof(unsigned)==sizeof(float), unsigned>::type u; memcpy(&u, &x, sizeof u); return u; }