ANSI C / assignment makes pointer from integer
Bill Wendling
wendling@ncsa.uiuc.edu
Wed Aug 8 14:13:00 GMT 2001
Also sprach Sebastian Ude:
}
} Assume this (very common) situation:
}
} [...]
}
} char *s;
}
} s = strdup("foo");
}
} [...]
}
} Looks pretty harmless, doesn't it ?
} But both gcc 2.95.3 and egcs 1.1.2 give me the following warning when
} compiling this code with -ansi:
}
} 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");
}
} [...]
}
} But why ?
}
} What kind of ANSI / ISO rule do I violate ?
} Why the hell is a cast neccessary at this point in order not to provoke a
} warning when compiling with -ansi ?
}
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.
--
|| Bill Wendling wendling@ncsa.uiuc.edu
|| Coding Simian
More information about the Gcc
mailing list