Re: C question (linux)
- Posted by "Derek Parnell" <ddparnell at bigpond.com> Dec 11, 2003
- 483 views
----- Original Message ----- From: "Matt Lewis" <matthewwalkerlewis at yahoo.com> To: <EUforum at topica.com> Subject: RE: C question (linux) > > > Paul wrote: > > > > int file_open(char *name, int mode) > > { > > > > // return open(name, mode); > > > > return fopen(name, "r"); > > } > > > > Would return the following when compiled: > > > > warning: return makes integer from pointer without a cast > > > > > > This is driving me absolutely mad! I'm attempting to adjust the > > source of a program I didn't write. For whatever reason, the old > > open() call is returning an invalid file descriptor (134758848 to > > be exact) so I am trying to change it from open() to fopen(). The > > files passed through this routine are all read only types, so there > > is no reason for mode to ever be anything but 0 ("r") so I figured > > just change the ,mode) to a "r" > > Rather than changing the return type of your function (as many have > suggested), why not just cast to an integer? It you change the return > type, you'll only generate lots of other errors wherever the function is > called, because the calls will all expect an integer. So change > > return fopen(name, "r"); > > to > > return (int) fopen(name, "r"); > I'm sorry Matt. I just have to respond to this one. !!!DO NOT DO WHAT MATT HAS SUGGESTED!!! It will only bring you bugs and more bugs. An integer is not a pointer. Forcing C to convert (read: 'change') a pointer into an int, just to stop warning messages is plain stupid (IMNSHO). If you are going to do something, at least do a good job of it. Why do you want your code to return an int? Or is it just that you wish to use fopen()? -- Derek