他の投稿でこの問題について書きました。これはそうではありませんが。GCC __attribute__((aligned(8)))not working
GCCコンパイラのバージョン:4.8.3(ARM用)
コードの抜粋:
uint8_t data[4] __attribute__ ((aligned (8))) = {1,2,3,4};
int main()
{
uint32_t p = 0;
p = (uint32_t)&data[0];
p = (uint32_t)&data[1];
p = (uint32_t)&data[2];
p = (uint32_t)&data[3];
}
それはませあるのでデータは、任意の関数の外にあることに注意してくださいスタックに割り当てられます。
(デバッグ時)私はp
のために見ていた結果は次のとおりです。すべてのヘルプははるかに高く評価されるだろう536870912, 536870920, 536870928, 536870936
:私はこのような何かを期待してい536870912, 536870913, 536870914, 536870915;
。
配列の個々の要素は、定義によって 'sizeof(T)'離れています。 –
@Matはいこれは私が期待することです。 – Hairi
@Oliver Charlesworth次に、これらの要素を複数のアドレスに割り当てることができます。 – Hairi