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

 
 
> IAR for 8051, объявление массива
WHALE
сообщение Jul 15 2015, 12:06
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение Jul 15 2015, 15:37
Сообщение #2


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

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



Конструкция с объявлением массива, у которого в качестве размера указана переменная или выражение в С допустима, но в общем случае такой массив будет создан во время выполнения, посредством выделения памяти из кучи.
IAR для 8051 даже позволяет такое делать если в настройках выбрать С99 и поставить галку Allow VLA, но только для локальных массивов, объявленных внутри функции.

В любом случае для 8051 подобные излишества скорее вредны чем полезны.


--------------------
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 Текстовая версия Сейчас: 21st August 2025 - 05:00
Рейтинг@Mail.ru


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