-
- все ответы не перечитывал, так что может быть повтор. Чтобы строка была во флеши нужно указать --string_literals_in_flash в General->C/C++compiler/Extra Options - MegaJohn(04.06.2013 01:19)
- Такое не всегда проходит - могут вылезти ошибки Apтём(350 знак., 04.06.2013 02:22)
- Пример с АВР не в тему - там флэш в отдельном адресном пространстве. - йцукен(04.06.2013 18:07, )
- ну дык покажите прототипы что-ле, или гадать на кофейной гуще ?! MegaJohn(374 знак., 04.06.2013 08:33)
- Вот пропотип: Apтём(439 знак., 04.06.2013 15:31)
- это для ARM или AVR или какой другой архитектуры ? Я выше указывал как делал для IAR AVR 5.5, щавтра могу показать как делал для IAR ARM 6.3 - MegaJohn(04.06.2013 23:07)
- Это IAR AVR 6.10. Из примера FreeRtos на Mega128. - Apтём(04.06.2013 23:30)
- это для ARM или AVR или какой другой архитектуры ? Я выше указывал как делал для IAR AVR 5.5, щавтра могу показать как делал для IAR ARM 6.3 - MegaJohn(04.06.2013 23:07)
- Вот пропотип: Apтём(439 знак., 04.06.2013 15:31)
- Такое не всегда проходит - могут вылезти ошибки Apтём(350 знак., 04.06.2013 02:22)
- попробуйте объявить как const char * - zeleny(04.06.2013 01:00)
- В первом случае объявляется переменная типа указатель. в которую заносится адрес строки (которая здесь константа и находится там где константам указано, здесь во флэш) в процессе инициализации стандартной библиотекой ввремени исполнения. во втором Белый Жрец(330 знак., 03.06.2013 13:40 - 13:48)
- Стало быть я прав и компилятор должен положить строку Молодой коллега(193 знак., 31.05.2013 23:34)
- Тут надо чётко понять, что положение строки в памяти не зависит от того, что написано в левой части от знака равно, если там не массив только. И typeof("blablabla") == (const char anonymous[N]) всегда, где N==strlen("Main Menu1")+1. - fk0(01.06.2013 07:29)
- Это не утверждения, это высказывания, то есть они не могут быть верными или неверными. По теме уже написано правильно (автор amx). Кстати, не только компилятор участвует в процессе, но и линкер. - SciFi(31.05.2013 23:37)
- Опять таки ИМХО, только компилятор, линкер это уже изврат. Молодой коллега(221 знак., 01.06.2013 00:00 - 00:04)
- Это соответствует стандарту, но что на это говорят всякие стандарты безопасного кодирования: amx(239 знак., 01.06.2013 08:32)
- Для говнокодеров есть опция -fwriteble-strings. - fk0(01.06.2013 10:05)
- Опция gcc -Wwrite-strings отвечает на все вопросы и позволяет не задаваться новыми каждый раз. - fk0(01.06.2013 07:24)
- Это соответствует стандарту, но что на это говорят всякие стандарты безопасного кодирования: amx(239 знак., 01.06.2013 08:32)
- Опять таки ИМХО, только компилятор, линкер это уже изврат. Молодой коллега(221 знак., 01.06.2013 00:00 - 00:04)
- Зайду издалека. cAmElcAsE дО дОбРа Не ДОвЕдёТ. И звёздочку ставить нужно слева от переменной сразу. Так до мозгов смысл быстрей доходит. По существу вопроса: в языке C строковые константы являются таки константами, если они являются константами, а fk0(2258 знак., 31.05.2013 18:21 - 18:36)
- Всё изложенное вами логично и понятно, полностью с этим согласен, так и пишу :), CamelCase - только названия функций :). Код приведённый мной в качестве примера это модификация кода ТС по ссылке, а не мой код. Блин, я конкретный вопрос, а мне Молодой коллега(23 знак., 31.05.2013 23:21 - 23:38)
- Это не cAmElCaSe, это венгерская
клинописьнотация. Она перестала быть актуальной с появлением нормальных текстовых редакторов для исходников (с навигацией по коду), то есть лет -адцать назад. - SciFi(31.05.2013 18:47)
- Строковые литералы имеют тип const char*. Для МК с одним адресным пространством всё const идёт в ПЗУ, а у AVR/PIC, например, что бы строка была в ПЗУ надо дописать волшебное слово PROGMEM/rom. Иного можно добиться шаманством со скриптами линкера. amx(832 знак., 31.05.2013 17:35 - 18:14)
- У АВР "волшебное слово", всегда было flash. - tesla(01.06.2013 11:08)
- Это у IAR-а - __flash (а не flash), у в GCC - PROGMEM. - Apтём(01.06.2013 16:00)
- ИМХО pText должен быть Молодой коллега(137 знак., 31.05.2013 23:56)
- Почитайте книжку про язык Си, в частности про указатели и массивы. Потом возвращайтесь с вопросами. Иначе будет разговор слепого с глухим. - SciFi(01.06.2013 00:44)
- Почитать про строковые литералы пожалуй,но в массивах и указателях я спец. :) - Молодой коллега(01.06.2013 01:40)
- Почитайте книжку про язык Си, в частности про указатели и массивы. Потом возвращайтесь с вопросами. Иначе будет разговор слепого с глухим. - SciFi(01.06.2013 00:44)
- У PIC, например, если PIC18 и hitech-C, или если PIC24 и C30 (XC16) ничего указывать не надо, и оно само ляжет в ROM. Более того... все компиляторы делятся на два класса. С нормальной поддержкой const и ненормальной. В первом всё описанное с const fk0(1402 знак., 31.05.2013 18:31)
- Про лучший способ. Только вот область видимости размером в 32кБ. - mr-x(31.05.2013 23:13)
- вроде в IAR для AVR __generic работал. - Vit(31.05.2013 18:36)
- Значит GCC жалкая паделка! - fk0(31.05.2013 18:43)
- У АВР "волшебное слово", всегда было flash. - tesla(01.06.2013 11:08)
- все ответы не перечитывал, так что может быть повтор. Чтобы строка была во флеши нужно указать --string_literals_in_flash в General->C/C++compiler/Extra Options - MegaJohn(04.06.2013 01:19)