delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/12/16/15:55:16

From: "Steve Chapel" <schapel AT breakthr DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Looks like GCC 2.95 bug
Date: Thu, 16 Dec 1999 13:57:12 -0600
Organization: Breakthrough to Literacy
Lines: 69
Message-ID: <83bg6q$do45@news.tis-in.trb>
References: <83b5qf$k5i$1 AT news DOT itfs DOT nsk DOT su> <38591F0C DOT 52CE1542 AT efd DOT lth DOT se>
NNTP-Posting-Host: 163.192.185.93
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.00.2919.5600
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.5600
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

"Peter Danielsson" <e96pd AT efd DOT lth DOT se> wrote in message
news:38591F0C DOT 52CE1542 AT efd DOT lth DOT se...
> I dont think you can  do char *p="test";
> p is a pointer. Try char p[]="test"; and &p[0] is the same as your p.

Sure you can! In fact, C++ allows assigning a string literal to a non-const
char * for compatability with old C programs. But I don't think passing a
string literal to a non-const char * argument is allowed. In this case, the
string literal is "" and func() has a non-const char * argument, so I
believe gcc is correct in rejecting this code.


> "Michael N. Filippov" wrote:
>
> > Hello !
> > I'm not sure it is the right place to ask - but it is the only C/C++
> > conference i read, sorry.
> >
> > The question is: is this code correct according to the latest C++
standards :)
> > and difference between commented part and last func() call.
> >
> > idisys:/usr1/users/michael/tmp$ cat const.cpp
> > #include <stdio.h>
> >
> > void    func(char* s)
> > {
> >   printf("func(%s)\n", s);
> > }
> >
> > int  main(void)
> > {
> >   char  *p = "Test string";     // NULL;
> > //  if ( p == NULL )
> > //    func("");
> > //  else
> > //    func(p);
> >   func( ( p == NULL ) ? "" : p );
> >   return 0;
> > }
> >
> > The problem is:
> > idisys:/usr1/users/michael/tmp$ gcc const.cpp
> > const.cpp: In function  nt main()':
> > const.cpp:15: passing onst char *' as argument 1 of unc(char *)'
discards
> >  qualifiers
> > idisys:/usr1/users/michael/tmp$ gcc -v
> > Reading specs from /usr/lib/gcc-lib/i586-ksi-linux/2.95/specs
> > gcc version 2.95 19990728 (release)
> >
> > Moreover I can compile it w/out problems
> > woland:~/tmp$ gcc const.cpp
> > woland:~/tmp$ gcc -v
> > gcc version 2.7.2.1
> >
> > and
> > [michael AT sig tmp]$ gcc const.cpp
> > [michael AT sig tmp]$ gcc -v
> > Reading specs from /usr/lib/gcc-lib/i586-ksi-linux/egcs-2.91.66/specs
> > gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
> >
> > All the same with DJGPP.
> >
> > Sincerely,
> > Michael
>


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019