Re: C question (linux)

new topic     » goto parent     » topic index » view thread      » older message » newer message

----- 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

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu