Mam trochę starszego kodu, który był zwykle kompilowany dla PowerPC z GCC 3.4.4. Teraz przenoszę części kodu, które chcę skompilować z GCC 4.8.1 z MinGW. W pewnym momencie w kodzie znalazłem to:Redundant cast of uint8 nie działa z 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
}
Jeśli chcę skompilować linię z oryginalnego kodu z GCC 4.8.1 pojawia się błąd lvalue required as left operand of assignment
. Jeśli pozbędę się operatora obsady, działa dobrze. Czy ktoś może wyjaśnić, dlaczego tak jest? Czy ta obsada nie jest po prostu zbędna i czy i tak nie powinna mieć znaczenia? I dlaczego działa z GCC 3.4.4?
Co to jest "cel" tej obsady? Nawet gdybyś użył tego stwierdzenia jako rwartości, obsada co najmniej wciąż jest zbędna/niepotrzebna. –
@FrankH. Jest to starszy kod - nie napisałem tego, więc niestety nie mogę powiedzieć, jakie były motywacje dla tego wiersza kodu. – Toby