>такие сокращения у нас не в обиходе.
Зато на ЛОРе вполне себе употребимы =)
>Если ты написал const
Тут понятно, компилер может с константными данными извращаться как хочет, а если const нет? Вот как изначальном вопросе о надобности инициализации, зачем копировать, если данные уже лежат? Пиши - не хочу.
Вот написал ты такое:
и действующий по твоим заветам компилятор создаст две копии данных строки- использование общих данных будет невозможно. А при копировании сработает обычный string pooling.Код:static char text1[] = "very long text string ..."; static char text2[] = ... //то же самое
>компилятор создаст две копии данных строки
Дык в твоём примере это и подразумевается!
>обычный string pooling
Хотяяя... Как я понял погуглив(а попадалась увы одна *****я жаба), при string pooling'е если мы объявим char s1[]="bla-bla-bla";char s2[]="bla-bla-bla"; то они будут указывать на один адрес? Но тогда при объявлении их static как раз разные адреса и должны получиться?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Да, две копии. А разве не так и должно быть? Какое его сообачье дело, что я пишу в строках - разное оно или одинаковое? Зачем считать пользователя кретином, пишушим в разных строках одно и то же исключительно от невнимательности? Если я для второй строки захочу общих данных с первой, я напишу что-то типа
static char *text2 = &text1[0];
и не надо будет никакой самодеятельности компилятора.
Большинство CP/M-компиляторов С, кстати, такой идиотской инициализации как в SDСС не имеют, и десятки лет на них прекрасно программируют. Кстати, последний SDCC не может собрать работоспособный код из исходников, прекрасно собирающихся при помощи hitech C 3.09 образца 1986 года. Я в итоге от SDCC отказался - устал подбирать его какашки.
Последний раз редактировалось Error404; 22.08.2012 в 16:55.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)