12.11.2017, 08:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Функция вывода на lcd и глобальные переменные
Сообщение от supercelt
|
Добавил статик.
|
Есть еще вариант, volatile.
|
|
|
|
12.11.2017, 08:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Функция вывода на lcd и глобальные переменные
Сообщение от IOPA4
|
Есть еще вариант, volatile.
|
Volatile если не ошибаюсь применяется когда нужно чтоб компилятор не делал оптимизацию над переменной, не изменяя сам. Для прерываний применимо и т д.
__________________
Глаза боятся,а руки делают.
|
|
|
|
12.11.2017, 15:07
|
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Функция вывода на lcd и глобальные переменные
Сообщение от jogick
|
В таких случаях, как у ТС, лично я внутри функции объявляю static массив и возвращаю из функции указатель на него. Во первых, это позволяет поместить такую функцию в библиотеку и присоединять к разным проектам, без привязки к именам глобальных переменных в других проектах. Во вторых, если этот массив нужен в других функциях он просто передаётся туда указателем.
Проще подружиться с указателями, чем использовать глобальные переменные.
|
Так вот.... о чём я и писал... Если я делаю статик внутри ф-ии, а потом возвращаю указатель, но не работает вывод на дисплей. Ну у меня там в коде написано все, в первом посте
|
|
|
|
12.11.2017, 15:08
|
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Функция вывода на lcd и глобальные переменные
Сообщение от CERGEI1982
|
Volatile если не ошибаюсь применяется когда нужно чтоб компилятор не делал оптимизацию над переменной, не изменяя сам. Для прерываний применимо и т д.
|
Да верно volatile исключает оптимизацию. Применяется для переменных, которые изменяются в прерываниях и тд
|
|
|
|
12.11.2017, 15:11
|
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Функция вывода на lcd и глобальные переменные
Сообщение от mike-y-k
|
Использование глобальных переменных экономит на коде и времени выполнения.
|
почему? разве глобальные? Почему тогда многие советуют по возможности не использовать глобал?
|
|
|
|
12.11.2017, 15:44
|
|
Вид на жительство
Регистрация: 03.10.2011
Сообщений: 485
Сказал спасибо: 35
Сказали Спасибо 234 раз(а) в 138 сообщении(ях)
|
Re: Функция вывода на lcd и глобальные переменные
Сообщение от jogick
|
В таких случаях, как у ТС, лично я внутри функции объявляю static массив и возвращаю из функции указатель на него. Во первых, это позволяет поместить такую функцию в библиотеку и присоединять к разным проектам, без привязки к именам глобальных переменных в других проектах.
|
А вот тут таится засада - повторный вызвов этой функции "убьёт" результат предыдущего вызова. Об этом надо будет всегда помнить самостоятельно, компилятор в этом не будет помощником.
Это-же касается и использования глобальных переменных.
|
|
|
|
12.11.2017, 15:52
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,770 раз(а) в 5,896 сообщении(ях)
|
Re: Функция вывода на lcd и глобальные переменные
Сообщение от supercelt
|
Почему тогда многие советуют
|
Такая же крайность, как и объявить ВСЕ переменные глобальными.
Сообщение от Serg3301
|
А вот тут таится засада - повторный вызвов этой функции "убьёт" результат предыдущего вызова
|
"Статик" на то и "статик", чтобы продолжать с покинутого места. Это не простые локальные, тут самому понимать надо, что делаешь.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
12.11.2017, 16:09
|
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Функция вывода на lcd и глобальные переменные
Сообщение от Serg3301
|
А вот тут таится засада - повторный вызвов этой функции "убьёт" результат предыдущего вызова. Об этом надо будет всегда помнить самостоятельно, компилятор в этом не будет помощником.
Это-же касается и использования глобальных переменных.
|
Это учтено. Мне и не нужен повторный вызов. Всё сработает и сделается за 1 вызов
|
|
|
|
13.11.2017, 02:22
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: Функция вывода на lcd и глобальные переменные
supercelt, так может таки на бумажке расписать все (проект, постановка задачи, описание переменных,…).
Для программки в три экрана можно и с листа, а вот когда переменных и структур на те три экрана набежит, то лучше таки все спроектировать и описать изначально. Потом и при отладке, и доработке сильно поможет.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
13.11.2017, 13:02
|
|
Прохожий
Регистрация: 12.08.2005
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 3 сообщении(ях)
|
Re: Функция вывода на lcd и глобальные переменные
Почему-то никто не замечает, что вот это:
static char value[] = "";
хоть static, хоть без, резервирует в ОЗУ только один байт, т.е. создаёт массив из одного 0, или - в зависимости от реализации - из пары байтов 0x0d, 0x0a. Потом автор туда записывает неопределённое количество байтов - и вылезает за границы массива с непредсказуемыми последствиями: могут попортиться какие угодно переменные, которые размещены вслед за этим массивом. Надо же задавать размер массива!
|
|
|
Сказали "Спасибо" SashaBu
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:32.
|
|