Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: For C Experts

2006-03-31 by sonny945852001

Dave,

   x[4] = *ip;

I thought array index in C starts at zero so valid index for x is only
0,1,2,3 ?

Sonny

--- In lpc2000@yahoogroups.com, "dsidlauskas1" <dsidlauskas@...> wrote:
>
> Consider the following code:
> 
> ============================
> char buf[]={1,2,3,4,5,6,7,8};
> int *ip, x[4];
> 
> for (i=0; i<4; i++)
>     {
>     ip = (int *)&buf[i];
>     x[4]  = *ip;
>     }
> =============================
> The Keil compiler compiles this without warning, but does not produce
> the expected (for me) result in x. The problem is that Keil uses the
> LDR instruction to effect the transfer and this is valid only on 4
> byte boundaries.
> 
> GCC compiles but does give a non-aligned access warning.
> 
> I believe that the compiler has enough information to use byte aligned
> transfers, and should, or at least give a warning.
> 
> Anybody want to weigh in on this one.
> 
> Thanks in advance for your comments.
> 
> Dave Sidlauskas
>

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.