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;
}