|
IAR for 8051, объявление массива |
|
|
|
Jul 15 2015, 12:06
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Не понимаю, что от меня хочет компилятор. Код #ifndef FLASH #define FLASH _Pragma("location=\"FLASH\"") #endif FLASH const unsigned char UART_BUFFERSIZE = 8; unsigned char UART1_RX_Buffer[UART_BUFFERSIZE]; Error[Pe028]: expression must have a constant value D:\PROGEKTS\microcontrollers\C8051\Silabs\No_RTOS\TEST\SRC\main.c 10 на строке с объявлением буффера UART1_RX_Buffer. На IAR-е для AVR и для ARM все нормально. Как объяснить компилятору, что UART_BUFFERSIZE таки является константой?
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
 |
Ответов
|
Jul 15 2015, 12:33
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (WHALE @ Jul 15 2015, 15:27)  эээ... а чуть-чуть развернуть вашу мысль можете?В смысле с примером правильного объявления. CODE #define UART_BUFFERSIZE (8) FLASH const unsigned char uart_buffersize = UART_BUFFERSIZE; unsigned char UART1_RX_Buffer[UART_BUFFERSIZE]; Остался только вопрос, а на кой вообще иметь эту 'uart_buffersize' константу в памяти. Поскольку ответить, полагаю, не сможете, то тогда так: CODE #define UART_BUFFERSIZE (8) unsigned char UART1_RX_Buffer[UART_BUFFERSIZE];
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 15 2015, 12:50
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(zltigo @ Jul 15 2015, 16:33)  Остался только вопрос, а на кой вообще иметь эту 'uart_buffersize' константу в памяти. Поскольку ответить, полагаю, не сможете, то тогда так: Код #define UART_BUFFERSIZE (8) unsigned char UART1_RX_Buffer[UART_BUFFERSIZE]; Ну попытаюсь ответить.. Вроде в умных книжках пишут что лучше где возможно обхо- диться без макросов и препроцессор не обеспечивает проверку типов. И все-таки почему такие-же объявления работают в IAR for AVR и IAR for ARM и не проходят в IAR for 8051. Почему компилятор не считает константой переменную объявленную как const и лежащую во флэши?
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
Сообщений в этой теме
WHALE IAR for 8051 Jul 15 2015, 12:06    zltigo QUOTE (WHALE @ Jul 15 2015, 15:50) Ну поп... Jul 15 2015, 13:08     WHALE Цитата(zltigo @ Jul 15 2015, 17:08) Более... Jul 15 2015, 16:03      SSerge Цитата(WHALE @ Jul 15 2015, 23:03) Но для... Jul 15 2015, 16:52       zltigo QUOTE (SSerge @ Jul 15 2015, 19:52) Сдела... Jul 15 2015, 17:00 SSerge Конструкция с объявлением массива, у которого в ка... Jul 15 2015, 15:37 zltigo QUOTE (SSerge @ Jul 15 2015, 18:37) Конст... Jul 15 2015, 16:48
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|