Question about math.pi is mutable
Grant Edwards
invalid at invalid.invalid
Mon Nov 9 09:49:15 EST 2015
On 2015-11-08, Marko Rauhamaa <marko at pacujo.net> wrote:
> Grant Edwards <invalid at invalid.invalid>:
>
>> On 2015-11-07, Marko Rauhamaa <marko at pacujo.net> wrote:
>>> "const" is a very ineffective tool that clutters the code and forces
>>> you to sprinkle type casts around your code.
>>
>> But it allows the compiler to warn you if you pass a pointer to a
>> read-only data to a function that expects a pointer to writable data.
>
> Unfortunately, it doesn't:
>
>========================================================================
> #include <stdio.h>
> #include <string.h>
>
> int main()
> {
> const char name[] = "Tom";
> char *p = strstr(name, "Tom");
> strcpy(p, "Bob");
> printf("name = %s\n", name);
> return 0;
> }
>========================================================================
>
> $ cc -o prog prog.c
> $ ./prog
> Bob
>
> No warning.
Yes, there are ways to fool the compiler by converting a const char*
to a plain char* like you did with strstr(). But in my experience
there are plenty of cases where it will generate a useful warning.
> Point is, the consequences of "proper" use of const are so annoying
> even standard library functions would rather grossly abuse it than
> tolerate compiler warnings everywhere.
That's your opinion.
My differs: _I_ find it useful. I don't have that many problems with
it. If you don't like it, don't use it -- nobody is forcing you to
declare 'const' variables.
--
Grant
More information about the Python-list
mailing list