Harti Brandt <[EMAIL PROTECTED]> wrote:
> 
> 
> Hmm, I though the following would work:
> 
> void
> foo(unsigned short *s)
> {
>       unsigned short temp;
> 
>       temp = s[0];
>       s[0] = s[1];
>       s[1] = temp;
> }
> 
> main()
> {
>       int i = 0x12345678;
> 
>       foo(&i);
>       printf("%08x\n", i);
> }
> 
> because how would the compiler in main() know, that you do something wrong
> in foo(). But... if you compile this with -O5, it does not work! This is
> because the compiler inlines foo() into main and the program prints junk like
> 0x12342804.


 Nope - that doesn't work either.  The call to foo() is not compatible
 with the prototype (in fact, the Systems/C compiler issues a warning
 on this:  

        Warning #2034: passing argument 1 from incompatible pointer type

 I believe gcc would as well.

        - Dave Rivers -

--
[EMAIL PROTECTED]                        Work: (919) 676-0847
Get your mainframe programming tools at http://www.dignus.com

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to