Здравствуйте, Erop, Вы писали:
E>Здравствуйте, Андрей Тарасевич, Вы писали:
АТ>>В С строковые литералы не константны по типу (т.е. в C это 'array of char' а не 'array of const char'). Тем не менее и в С модификация строкового литерала запрещена, т.е. четко сказано, что попытка модификации строкового литерала приводит к неопределенному поведению.
E>В ANSI стандарте?
Да, именно там.
E>Точно написано?
Абсолютно точно. Даже в замшелом С89/90: "6.1.4 String Literals [...] If the program attempts to modify a string literal of either form, the behavior is undefined".
E>Я понмю, что у всех компиляторов была опция "можно совмещать совпадающие строковые литералы",
Эта опция влияет не только на результаты модификации литералов, но и на адресные свойства литералов, т.е. ее "ценность" не сводится только к вопросам модификации.
У компиляторов в дополнение к этому есть еще бывает опция, явно делающая строковые литералы модифицируемыми. Тем не менее к стандартному все С это отношения не имеет.
E>и припоминаю проги, которые использовали литералы, как буферы в памяти...
В "прогах" еще и не такое можно увидеть.