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

 
 
> Объявление массива без указания размера, и sizeof()
toweroff
сообщение Feb 21 2014, 13:20
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Добрый день!
Что-то не соображу...
Есть массив, находится во флеш. Реально здоровый, количество элементов считать руками ну просто лень.
Объявлен (соответственно, в хидере и в с-файле) так
Код
extern const unsigned char my_array[];

const unsigned char my_array[] = { /* здесь через запятую элементы массива */ };


при обращении к массиву никаких проблем, но вызов sizeof(my_array) вводит компилятор в ступор:
Код
test\test.c(41): error:  #70: incomplete type is not allowed


в чем проблема?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
toweroff
сообщение Feb 21 2014, 13:53
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Уфф... в общем переформатировал я массив в красивые колоночки по 16 байт и тупо посчитал строки...
Просто от прошивки к прошивке эти массивы могут меняться, делать это каждый раз не хотелось бы, да, видно, придется. Доки по RVDS также никаких решений не предлагают sad.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 21 2014, 14:11
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(toweroff @ Feb 21 2014, 15:53) *
и тупо посчитал строки...
Чем не устроила предложенная SM дополнительная константа в том же файле, проинициализированная sizeof(array)/sizeof(array[0])? Места она занимает явно меньше чем ваши выравнивания, дурацких ограничений в 16 символов не накладывает, ошибиться при ее подсчете компилятор (в отличие от вас) не может - сплошные плюсы. И для большинства процев накладных расходов не будет - что заданный вами врукопашную, что посчитанный компилятором он будет лежать отдельной константой ибо далеко не любое число можно встроить в код команды.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 21 2014, 14:16
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Сергей Борщ @ Feb 21 2014, 18:11) *
предложенная SM дополнительная константа


Я подозреваю, что кейл так не может, что это гнутое расширение...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 01:54
Рейтинг@Mail.ru


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