Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Статический массив
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
adnega
Почему

const BUF_SIZE = 100;
unsigned char buf[BUF_SIZE];

выдает ошибку компиляции с109 illegal constant expression.

const BUF_SIZE = 100;
unsigned char buf[100];

- все ок.

05.gif ?

(uVision3 v3.10b, C Compiler CA.EXE v2.00f)
vromanov
const int BUF_SIZE = 100;
тип забыл указать после const
VAI
напишите
Код
#define BUF_SIZE 100
unsigned char buf[BUF_SIZE];

У Вас же применен модификатор const, который говорит о неизменности переменной.
Не путайте константное - выражение с переменной.
А как правильно массив объявлять можно найти в любом учебнике по С.
http://www.citforum.ru/programming/c/h12.shtml#126

Цитата
тип забыл указать после const

по умолчанию предполагается int.
vromanov
Да, согласен.
lebiga
#define BUF_SIZE 100
const char BUF_SIZE; //если это нужно
unsigned char buf[BUF_SIZE];
scifi
Цитата(lebiga @ May 15 2007, 16:29) *
#define BUF_SIZE 100
const char BUF_SIZE; //если это нужно

Хм, зачем это нужно? После препроцессора получится
const char 100; // полный бред

Кстати, в С++ можно использовать const переменную для указания размера массива. Это одно из существенных различий между С и С++. Про const в C++ можно почитать здесь:

http://www.possibility.com/Cpp/const.html
VAI
Вопрос был по С.
Цитата
Кстати, в С++ можно использовать const переменную для указания размера массива. Это одно из существенных различий между С и С++


А в ++ я не силен, но Вы правы. Спасибо, теперь я это запомню.
Вот про это на русском:
http://ruseti.ru/book1/Chapter%206/index.htm#12
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.