On 2017-10-12, Neil Cerutti <ne...@norwich.edu> wrote: > On 2017-10-12, Marko Rauhamaa <ma...@pacujo.net> wrote: >> Bill <bill_nos...@whoknows.net>: >> >>> Marko Rauhamaa wrote: >>>> One example is the surprising fact that string literals in C >>>> are "char *" and not "const char *".
Yep, that's the basis for a lot of the problems with 'const' in C. Unfortunately for historical reasons, a lot of people expect string literals to be mutable. That should have been stamped out decades ago, but it's too late now. >>> If not, you couldn't pass a string literal to a function >>> having prototype void f(char *s); IMO, it should be illegal to pass a string literal to a function with prototype f(char *s). You shouldn't try to modify a string literal, and if f() isn't going to modify the string, it should have been declared f(const char *s). >> That *ought* to be prevented. That's the whole point. > > I'm far less experienced in C, but I threw up my hands and stopped > bothering with const qualifiers in C due to such headaches. When in > Rome, program without const qualifiers in C. Using const with strings in C with amateurish libraries is a headache because _some_people_ will write their declarations so as to require pointers to mutable strings even when they have no intention of mutating them. Those people should be hunted down and slapped with a herring until they understand the error of their ways. The standard library is much better about that. -- Grant Edwards grant.b.edwards Yow! Kids, don't gross me at off ... "Adventures with gmail.com MENTAL HYGIENE" can be carried too FAR! -- https://mail.python.org/mailman/listinfo/python-list