我有一些遗留代码,这些代码通常是为 PowerPC 编译的 GCC 3.4.4 。现在我正在移植一些我想用 MinGW 的 GCC 4.8.1 编译的代码部分。在代码中的某个时刻,我发现了这一点:
// Prototypes
void foo(uint8* pData);
uint8 bar();
// Function
void foo(uint8* pData)
{
(uint8) *(pData++) = bar(); // Original Code - Doesn't work with GCC 4.8.1
*(pData++) = bar(); // Works with GCC 4.8.1
}
如果我想使用 GCC 4.8.1 从原始代码编译该行,我会收到lvalue required as left operand of assignment
错误消息。如果我摆脱演员阵容,它就可以正常工作。有人可以解释这是为什么吗?那演员不是多余的,无论如何都不重要吗?为什么它与 GCC 3.4.4 一起使用?