私は現在C++ 11でOSカーネルを開発中ですが、私は質問に出くわしました。答えは見つからないようです私自身。alignas指定子と__attribute __(整列)、C++ 11
現在、コンパイラ固有の属性(例:gccの__attribute__(aligned)
)を使用してページング構造を調整していますが、代わりにC++ 11のalignas指定子を使用したいと思います。これはClangには問題ありません。 alignasへのパラメータとして4096のアライメントを受け付けますが、G ++はアライメントしません!
まず最初に、alignas specifier
とgcc __attribute__(aligned)
の主な違いは明らかに特定の値とのアライメントが保証されていますが、gccのアライメント指定子には128の制限があるようですが、無限、なぜこれは?
なぜconst整数をアライン指定子に渡すことができないのですか?
どのバージョン:
あなたの最後の質問に答えるために、
alignas
だけのために定義されて?ここでGCC 4.8を選んだら:http://liveworkspace.org/code/1hxHGg$0、それはうまく動作します。 –@ R.MartinhoFernandes:4.8; http://liveworkspace.org/code/1kRIjz$0を参照してください。エラーは '警告:要求されたアラインメント4096は128より大きい[-Wattributes]' – Skeen
です。それは質問に入れるのに有益な情報のように思えます:) –