Opened 3 years ago
Last modified 3 years ago
#210 new enhancement
Should string literals be const, like in C++?
Reported by: | mlbrooks | Owned by: | |
---|---|---|---|
Priority: | minor | Component: | cfa-cc |
Version: | 1.0 | Keywords: | |
Cc: |
Description
With array type:
#ifndef __cforall #include <stdio.h> #endif int main(int argc, char ** argv) { char s[] = "hello"; s[3] = 'p'; s[4] = '!'; printf("%s\n", s); }
gcc actual, g++ actual, cfa actual: compile succeeds, run prints "help!"
With pointer type:
#ifndef __cforall #include <stdio.h> #endif int main(int argc, char ** argv) { char *s = "hello"; s[3] = 'p'; s[4] = '!'; printf("%s\n", s); }
gcc actual, cfa actual: compile succeeds, run gets segmentation fault
g++ actual: compiler warning, ISO C++ forbids converting a string constant to 'char*'
Note: See
TracTickets for help on using
tickets.
I vote for this. The only downside is C->CFA code might require adding const in a few more places but only in places where it helps anyways.