Proteus, KiCAD и другие ECAD Разработчик так или иначе сталкивается с системами автоматизированного проектирования. Данный раздел - по САПР. |
30.03.2007, 10:24
|
|
Временная регистрация
Регистрация: 27.03.2007
Адрес: Москва
Сообщений: 50
Сказал спасибо: 21
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Особенности программирования на Си для AVR
Не очень понятно, почему называть одинаково локальные и глобальные это бред? В этом как раз смысл мероприятия. Берешь функцию, и не задумываясь о переменных вставляешь куда надо.
Сообщение от stas633
|
Правильным решением будет объявление рабочей переменной в каждой функции.
|
О! А как иначе? Это не просто правильное, это нормальное и штатное решение., а то для вышестоящей функции она и останется "глобальной"
|
|
|
|
30.03.2007, 19:55
|
|
Гражданин KAZUS.RU
Регистрация: 16.12.2004
Сообщений: 587
Сказал спасибо: 13
Сказали Спасибо 23 раз(а) в 9 сообщении(ях)
|
Re: Особенности программирования на Си для AVR
Сообщение от LessM
|
Не очень понятно, почему называть одинаково локальные и глобальные это бред? В этом как раз смысл мероприятия. Берешь функцию, и не задумываясь о переменных вставляешь куда надо.
|
Как раз в этом случае то задумываться придётся. Иначе можно вместо локальной по ошибке использовать глобальную и наоборот. Какой мысл создавать себе дополнительные трудности? Из мазохизма что ли?
А вообще правилом хорошего тона в C является минимизация количества глобальных имен и максимальное ограничение видимости любых имен вообще. Даже макросы следует использовать с осторожностью. Надо что то изменить в другой функции - для этого есть указатели.
Сообщение от LessM
|
Сообщение от stas633
|
Правильным решением будет объявление рабочей переменной в каждой функции.
|
О! А как иначе? Это не просто правильное, это нормальное и штатное решение., а то для вышестоящей функции она и останется "глобальной"
|
Не понял?
|
|
|
|
11.04.2007, 23:02
|
|
Вид на жительство
Регистрация: 03.05.2006
Сообщений: 312
Сказал спасибо: 30
Сказали Спасибо 144 раз(а) в 52 сообщении(ях)
|
Не могу сделать в CVAVR простую, в принципе-то вещь: сделать в EEPROM массив и проинициализировать его.
То есть сделать могу, а проинициализировать - нет.
Засада кроется в том, что внутри массива есть указатель, который должен ссылаться на другие элементы того же самого массива. Например:
typedef eeprom struct _linked_list *PLINKED_LIST;
typedef eeprom struct _linked_list {
char a[10];
PLINKED_LIST next;
} LINKED_LIST;
const eeprom LINKED_LIST list[] ={{"AAA", &list[1]},{"BBB", &list[0]}};
не компилируется - видимо, на момент присваивания значений массив list еще не создан, конструкция &list[1] (или list+1) вызывает ошибку "undefined symbol list"
В WinAVR такой код работает (с несущественными правками по части объявления места размещения данных).
Как заставить его работать CVAVR?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Краткий обзор методов помехоустойчивого программирования для
|
Don_Ambrosio |
Микроконтроллеры, АЦП, память и т.д |
0 |
09.04.2008 01:17 |
О стилях программирования на C для МК
|
Prime |
Микроконтроллеры, АЦП, память и т.д |
13 |
04.04.2008 14:12 |
Особенности использованя ATiny45
|
BodyZ |
Микроконтроллеры, АЦП, память и т.д |
5 |
24.07.2007 22:26 |
Особенности прописывания Tiny13,
|
delay |
Микроконтроллеры, АЦП, память и т.д |
0 |
02.11.2005 22:00 |
Какие необходимые условия для программирования PIC?
|
graham |
Микроконтроллеры, АЦП, память и т.д |
4 |
17.10.2005 21:18 |
Часовой пояс GMT +4, время: 18:20.
|
|