OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] Refreshed genx.h, plus some plans

[ Lists Home | Date Index | Thread Index ]

David Tolpin scripsit:

> > Concrete example: if you declare
> > 
> >     int genxComment(genxWriter w, const utf8Byte * text);
> > 
> > then a user of the genx API can pass either a 'const utf8Byte *'
> > or a plain 'utf8Byte *' to the routine, without any compiler
> > warnings.
> > 
> > Conversely, if you declare:
> > 
> >     int genxComment(genxWriter w, utf8Byte * text);
> > 
> > then users of the API can *only* pass plain, non-const 'utf8Byte *'s
> > to the routine.  If they happen to have a 'const utf8Byte *',
> > then *they* need to do a cast, or copy to a non-const buffer,
> > or perform some other gyration.
> 
> the problem is that it is not so. Take an ANSI C compiler, turn all warning
> on and try it.

I did, with the following test code:

     1  void ccall(const char *p) { }
     2  void pcall(char *p) { }
     3
     4  int main() {
     5          const char cbuff[30];
     6          char pbuff[30];
     7
     8          ccall(cbuff);
     9          ccall(pbuff);
    10          pcall(cbuff);
    11          pcall(pbuff);
    12          return 0;
    13          }

(line numbers added).   I ran gcc on this both with and without -Wall,   
and got in each case:

contest.c: In function `main':
contest.c:10: warning: passing arg 1 of `pcall' discards qualifiers from
pointer target type

So Joe's claim looks exactly right: passing a const char array to a
function expecting a plain char array raises a warning; other combinations
do not.  Granted that a cast will suppress this warning, but it will
suppress almost every type warning in C (you can't cast a function pointer
to something else, nor vice versa).

-- 
My confusion is rapidly waxing          John Cowan
For XML Schema's too taxing:            jcowan@reutershealth.com
    I'd use DTDs                        http://www.reutershealth.com
    If they had local trees --          http://www.ccil.org/~cowan
I think I best switch to RELAX NG.




 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS