Вот; это приводит к неопределенному поведению (нарушение псевдонимов).
, и Clang не жалуются, если я назначаю строковый литералchar*
даже при использовании множества педантичных опций (-Wall -W -pedantic -std=c99
):
char *foo = "bar";
в то время как они (конечно) жалуются, если я назначуconst char*
кchar*
.
Означает ли это, что строковые литералы считаютсяchar*
тип? Не должны ли они бытьconst char*
? Это не определенное поведение, если они изменяются!
И (некоррелированный вопрос), как насчет параметров командной строки (то есть:argv
): он считается массивом строковых литералов?