реклама на сайте
подробности

 
 
> Не могу понять, что значит эта запись!, Описание массивов в IAR 5.30
MaksimYrievich
сообщение Aug 10 2009, 17:55
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 10-08-09
Пользователь №: 51 828



Уважаемые профессионалы и любители программирования в IAR! У меня проблема! Не могу сообразить, что означает ниже следующий код. Просто не могу сообразить, что означают эти директивы (хелп IARa не предлагать!). Подскажите пожалуйста, вразумите! А вот собственно и код:

__no_init UCHAR usbRxBuf[2][USB_BUFSIZE] __attribute__ ((section (USB_BUFFER_SECTION))) IAR_SECTION(USB_BUFFER_SECTION); /* raw RX buffer: PID, 8 bytes data, 2 bytes CRC */

А в файле stdafx.h сказано, что:

#define __attribute__(arg)
#define IAR_SECTION(section) @ section
#define UCHAR unsigned char

Со строчкой про UCHAR я разобрался!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение Aug 10 2009, 18:23
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



По поводу __no_init смотреть файл с названием типа CompilerReference.pdf или подобным. Смысл прост - статические переменные (те, которые не auto) инициализируются нулями, если не инициализированы явно. __no_init это отменяет.

Остальное - похоже на попытку сделать исходник, который может компилироваться как IAR-ом, так и GCC.
__attribute__ это для GCC, при компиляции IAR-ом эта часть с помощью препроцессора заменяется на пустое место, а IAR_SECTION(section) превращается в @ section - это указание в какой секции разместить переменную.

В результате компилятору достаётся строка:
__no_init unsigned char usbRxBuf[2][USB_BUFSIZE] @ USB_BUFFER_SECTION;

При компиляции GCC - наоборот убирают IAR_SECTION(...), оставляют __attribute__(...).


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th August 2025 - 21:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01563 секунд с 7
ELECTRONIX ©2004-2016