我目前正在使用C++11开发操作系统内核,但遇到了一个问题,我自己似乎找不到答案。
目前我正在使用编译器特定属性(例如gcc的__attribute__(aligned)
)来对齐我的分页结构,但我想使用C++11中的alignas指定符代替,在Clang++上这不成问题,因为它欣然接受4096对齐作为参数的alignas,但G++却不行!
首先,alignas指定符
和gcc的__attribute__(aligned)
之间的主要区别是什么?显然两者都确保将对齐到特定值,但是在gcc中,alignas指定符似乎有一个128的限制,而该属性几乎没有限制,为什么会这样?
还有为什么不能将常量整数传递给alignas指定符?