Obecnie pracuję nad rozwojem jądra systemu operacyjnego w C++ 11, a natknąłem się na pytanie, nie mogę znaleźć odpowiedzi na siebie.alignas specifier vs __attribute __ (wyrównane), C++ 11
Obecnie dopasowuję struktury stronicowania, używając atrybutów specyficznych dla kompilatora (np. Gcc's __attribute__(aligned)
), ale chcę używać zamiast tego specyfikatora alignas C++ 11, na Clang ++ to nie jest problem, ponieważ chętnie akceptuje 4096 wyrównanie jako parametr alignas, jednak G ++ nie!
Więc przede wszystkim, co jest główną różnicę między alignas specifier
i gcc __attribute__(aligned)
oczywiście zarówno zapewnić dostosowanie do określonej wartości, jednak specifier alignas w gcc zdaje się mieć limit 128, natomiast atrybut wydaje się niemal nieograniczone, dlaczego tak jest?
Dlaczego nie można przekazać liczby całkowitej stałej do specyfikatora alignas?
jaka wersja GCC? Jeśli wybierzesz GCC 4.8 tutaj: http://liveworkspace.org/code/1hxHGg$0, to działa dobrze. –
@ R.MartinhoFernandes: 4,8; patrz http://liveworkspace.org/code/1kRIjz$0, z błędem 'ostrzeżenie: wymagane wyrównanie 4096 jest większe niż 128 [-Wattributes]' – Skeen
Oh, jest w typie. To brzmi jak przydatna informacja do postawienia w pytaniu :) –