ANSI C / assignment makes pointer from integer

Alexandre Oliva aoliva@redhat.com
Fri Aug 10 16:32:00 GMT 2001


On Aug  8, 2001, Bill Wendling <wendling@ncsa.uiuc.edu> wrote:

> Also sprach Sebastian Ude:
> } warning: assignment makes pointer from integer without a cast
> } 
> } The warning disappears if you would change the code like this:
> } 
> } [...]
> } 
> } char *s;
> } 
> } s = (char*) strdup("foo");
> } 
> } [...]

> If you don't have the proper header files, then "strdup" will be declared
> automagically as returning a type "int". Hence, the problem. If you
> include the proper header, this should go away.

Yep.  And if strdup is not properly declared, you'll run into problems
if you just add the cast.  There are architectures, such as
mn10300-elf, in which a different register is used for the return
value, depending on whether you're returning a pointer or something
else.  Without an appropriate declaration, strdup would return the
pointer in a0 but you'd take the garbage stored in d0 as if it were an
int and convert it to char*.

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist    *Please* write to mailing lists, not to me



More information about the Gcc mailing list