GCC を使用すると、次のコードの 2 行目で「初期化要素が定数ではありません」というエラーが表示されます。
uint8_t gBuffer[512 + 4]; /* Data buffer */
uint8_t* gAlignedBuffer = (uint8_t*)(((uint32_t)gBuffer + 4) & 0xFFFFFFFCU); /* Align buffer to 4-byte boundary */
ただし、 & 0xFFFFFFFCU を + 0xFFFFFFFFCU に変更すると、コードは正常にコンパイルされます。
uint8_t gBuffer[512 + 4]; /* Data buffer */
uint8_t* gAlignedBuffer = (uint8_t*)(((uint32_t)gBuffer + 4) + 0xFFFFFFFCU); /* Align buffer to 4-byte boundary */
どうしてこれなの?