W języku C, czy istnieje sposób na wyrównanie (np. Więcej wyrównania niż można wywnioskować z systemu typów) na stosie?Odpowiednik std :: aligned_storage <> w C?
Dla zmiennych w dynamicznie przydzielanej pamięci możemy zawsze wyrównać ręcznie, jeśli wszystko inne zawiedzie, ale co można zrobić dla zmiennych w automatycznie przydzielonej pamięci?
Domyślam się, że możliwe jest użycie char[size + alignment - 1]
, a następnie zawsze używaj manipulacji bitem, aby uzyskać dostęp do zmiennej, ale wydaje się to nieco "cieńsze niż to konieczne" (har har;)).
Czy próbowałeś _Alignas specifier? – this
@ this ups, powinienem był wspomnieć, nie C11, dzięki – Praxeolitic
Dlaczego zaakceptowałeś drugą odpowiedź, jeśli C11 nie było opcją? :-( – this