Warum kennzeichnen ANSI-C-Compiler nicht die Verwendung eines String-Literal-Arguments in einem Funktionsaufruf, bei dem der entsprechende Parameter keinen const-Qualifier hat? Zum Beispiel könnte der folgende Code eine Ausnahme erzeugen, wenn er versucht, in einen reinen Lesespeicher zu schreiben.
void somefunc(char buffer[10]);
void somefunc(char buffer[10]) {
int i;
for (i = 0; i < 10; i++)
buffer[i] = 0;
}
int main(int argc, char **argv) {
somefunc("Literal");
return 0;
}
Diese Situation könnte zur Kompilierzeit erkannt werden, aber VS2010 und gcc scheinen dies nicht zu tun. Der Aufruf von somefunc mit einem const char* Argument erzeugt eine Compilerwarnung.