Mail Archives: djgpp/1999/12/16/15:55:16
"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 -