...
Code Block | ||
---|---|---|
| ||
char *strcat(char *s1, char const *s2); char *str1 = "str1"; char const *str2 = "str2"; char str3[] = "str3"; char const str4[] = "str4"; strcat(str3, str2); /* Args reversed to prevent overwriting string literal */ strcat(str3, str1); strcat(str4, str3); /* Compiler warns that str4 is const */ |
The const
\ -qualification of the second argument s2
eliminates the spurious warning in the initial invocation, but maintains the valid warning on the final invocation in which a const
-qualified object is passed as the first argument (which can change). Finally, the middle strcat()
invocation is now valid, as str1
is a valid destination string, as the string exists on the stack and may be safely modified.
...