Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

почему несерьезно? (+)

Отправлено Радиолюбитель без лицензии 26 апреля 2007 г. 18:09
В ответ на: Так прокатит :-) но только это ж несерьезно :( С таким успехом можно всё в один впихнуть да и ладно. отправлено <font color=gray>andryg</font> 26 апреля 2007 г. 17:52

Как я вижу происходящее:

Во-первых, почему регистровая переменная не может быть экстерн?

Потому, что при общении с регистровой переменной компилятор использует номер регистра, в котором та переменная хранится. И не генерирует никаких ссылок для дальнейшей линковки. В случае с экстерн переменной она хранится там, куда ее положит линкер. Компилятор генерирует ссылку на адрес в памяти, которую потом линкер заменяет на конкретный адрес переменной.

Поэтому.

На этапе генерации кода компилятор должен иметь информацию о том, в каком регистре хранится эта переменная.

Поэтому.

Для регистровых переменных допускается множественное объявление со всеми регалиями и без экстерн. А с экстерн не допускается.

Поэтому.

Там, где Вы пишите экстерн (объявляете переменную), в хидере, нужно написать переменную без экстерн и со всеми регалиями. Там, где переменная определяется, т.е. в сишнике, ничего писать не нужно. Хидер смело включайте во все сишники.

Так в avr-gcc и IARе.

Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 85:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru