В настоящее время я разрабатываю ядро ОС на С++ 11, и я столкнулся с вопросом, я не могу найти ответ на себя.
В настоящее время я выравниваю свои структуры подкачки, используя специфические атрибуты компилятора (например, gcc __attribute__(aligned)
), однако я хочу использовать спецификатор выравнивания С++ 11, на Clang++ это не проблема, так как это с радостью принимает выравнивание 4096 как параметр для выравнивания, однако g++ не делает!
Итак, в первую очередь, какое основное различие между alignas specifier
и gcc __attribute__(aligned)
, очевидно, обе обеспечивают согласование с определенным значением, однако спецификатор alignas в gcc, похоже, имеет ограничение 128, тогда как атрибут кажется почти безграничным, почему это?
Также почему невозможно передать одно целое const в спецификатор alignas?