From: "Steve Chapel" 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" 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 > > > > 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 >