Re: Why does gcc4 dislike this code?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jun 18, 2008 at 19:16, walt <w41ter@xxxxxxxxx> wrote:
> Brian Dessent wrote:
>>
>> walt wrote:
>>
>>>   *((unsigned long int *) tmp)++ = *((unsigned long int *) b1)++;
>>>
>>> error: invalid lvalue in increment
>
>> The lvalue cast was a nonstandard gcc extension that was removed in 3.4;
>> in other words this is not valid standard C/C++.
>>
>> http://gcc.gnu.org/gcc-3.4/changes.html
>
> Wow, that was fast, thanks.  I'm quite sure I'd never write code
> like that in the first place, mostly because it would never occur
> to me to try it.  If you had to fix that code, how would you do it?
>

memcpy(tmp, b1, sizeof(long));
tmp += sizeof(long);
b1 += sizeof(long);

(assuming tmp and b1 are char*)

Reading and writing through those casts are likely a violation of
strict-aliasing anyways.

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux