svn commit: trunk/busybox/networking

walter harms wharms at bfs.de
Mon Jan 29 12:27:09 UTC 2007



Denis Vlasenko wrote:
> On Sunday 28 January 2007 19:11, Bernhard Fischer wrote:
>> On Sun, Jan 28, 2007 at 06:59:12PM +0100, Denis Vlasenko wrote:
>>> On Sunday 28 January 2007 18:59, Bernhard Fischer wrote:
>>>> On Sun, Jan 28, 2007 at 06:25:38PM +0100, Denis Vlasenko wrote:
>>>>
>>>>> Then why gcc doesn't warn me when I assign "const char*" to "char*"?
>>>> I don't understand?
>>> Try  char *str = "constant";
>> $ cat foo.c 
>> void f(void) {
>> 	char*c="constant";
>> 	char *str = c;
>> 	str[0]='\0';
>> }
> 
>> $ gcc -c foo.c -Wwrite-strings
>> foo.c: In function 'f':
>> foo.c:2: warning: initialization discards qualifiers from pointer target type
> 
> gcc-4.1.1:
> 
> # cat t.c
> int main() {
>         char *c = "abc";
>         c[0] = 'b';
>         return 0;
> }
> 
> # gcc t.c
> 
> # ./a.out
> Segmentation fault
> 

this is intended by the c-standards. (i had a lon discussion some time agao)
in short:
char []  always writeable
char *   implementation
const    never
see: (C - A reference Manual, 5th ed, p 32-33)

hope that helps,
re,
 wh










More information about the busybox mailing list