使用 GCC,我得到以下代码第二行的“初始化元素不是常量”错误:
uint8_t gBuffer[512 + 4]; /* Data buffer */
uint8_t* gAlignedBuffer = (uint8_t*)(((uint32_t)gBuffer + 4) & 0xFFFFFFFCU); /* Align buffer to 4-byte boundary */
但是,如果我将 & 0xFFFFFFFCU 更改为 + 0xFFFFFFFCU,则代码编译正常:
uint8_t gBuffer[512 + 4]; /* Data buffer */
uint8_t* gAlignedBuffer = (uint8_t*)(((uint32_t)gBuffer + 4) + 0xFFFFFFFCU); /* Align buffer to 4-byte boundary */
为什么是这样?