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

 
 
> Имею желание объявить массив строк с переменной длиной, Но не имею возможности :-(
GetSmart
сообщение Aug 1 2006, 22:04
Сообщение #1


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Вобщем в целях экономии памяти программ и чтоб не извращаться я хочу объявить вот это:
Код
const char TablNames[] =
  { lChTablMax,
    "ЛЯЛЯЛЯЛЯЛЯ",
    "ДЫДЫДЫДДЫ",
    "ГУГУГУ"
  };

Разумеется, можно написать всё это через отдельные символы, но это не для меня. Я вот хачу так. Подскажите мне, что здесь надо поправить, чтоб компилятор меня не отсылал читать книжку?

Обязательное требование - чтоб строки были переменной длины и между ними было по одному нулю. А при чтении программно я это дело разгребу как мне надо.
Ну и на Си, конечно! Через указатели как-то криво всё получается. В смысле больше места занимает.

Сообщение отредактировал GetSmart - Aug 1 2006, 22:14


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Aug 2 2006, 07:26
Сообщение #2


Гуру
******

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



Цитата
Имею желание объявить массив строк с переменной длиной

Массив по тому и "маcсив", что однородный. Посему массивом может быть только массив указателей на строки, что Вам здесь и показали, как сделать.


Цитата(Old1 @ Aug 2 2006, 09:38) *
Чтобы все легло во flash сделайте так:
Код
__flash char *TablNames[]={
  "44444444444444",
  "555555555555555",
  "66666666666666666666",
  "7777777777777777777777"
};

Кстати, для _моего_ развития в части незнакомых мне AVRовских заморочек - то что указатели лягут во
FLASH, это ясно. А вот на счет тела строк - уверены?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Old1
сообщение Aug 2 2006, 07:38
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 697
Регистрация: 26-07-05
Из: Могилев
Пользователь №: 7 095



Цитата(zltigo @ Aug 2 2006, 10:26) *
Цитата

Имею желание объявить массив строк с переменной длиной

Массив по тому и "маcсив", что однородный. Посему массивом может быть только массив указателей на строки, что Вам здесь и показали, как сделать.


Цитата(Old1 @ Aug 2 2006, 09:38) *
Чтобы все легло во flash сделайте так:
Код
__flash char *TablNames[]={
  "44444444444444",
  "555555555555555",
  "66666666666666666666",
  "7777777777777777777777"
};

Кстати, для _моего_ развития в части незнакомых мне AVRовских заморочек - то что указатели лягут во
FLASH, это ясно. А вот на счет тела строк - уверены?

Насчет "все" я был не прав. Тела строк лягут в СРАМ. Но вот так ляжет все во flash:
Код

__flash char __flash *TablNames[]={
  (char __flash *)"44444444444444",
  (char __flash *)"555555555555555",
  (char __flash *)"66666666666666666666",
  (char __flash *)"7777777777777777777777"
};

Чтобы работало надо компилятору еще ключь указать: --string_literals_in_flash.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- GetSmart   Имею желание объявить массив строк с переменной длиной   Aug 1 2006, 22:04
- - gab   Не знаю как в IAR С, но в С это, вроде, делается т...   Aug 1 2006, 23:58
- - Гость   Объявить массив строк можно так: Кодconst char * c...   Aug 2 2006, 05:35
- - Old1   Цитата(GetSmart @ Aug 2 2006, 01:04) Вобщ...   Aug 2 2006, 06:38
- - Rst7   Цитата"ЛЯЛЯЛЯЛЯЛЯ",    "ДЫДЫДЫДДЫ...   Aug 2 2006, 07:11
- - diper   Объявить массив строк можно так: Кодconst char * c...   Aug 2 2006, 07:30
- - GetSmart   Как много ответов :>) 1. Как положить во флэш и...   Aug 2 2006, 13:30
|- - diper   Задачу так и не описал Будем гадать дальше - так ...   Aug 2 2006, 14:11
|- - zltigo   Цитата(GetSmart @ Aug 2 2006, 16:30) Все ...   Aug 2 2006, 14:49
- - rezident   GetSmart, ты бы сказал, что тебе это надо для опис...   Aug 2 2006, 14:19
- - GetSmart   rezident Это не для меню. Это для названий таблицы...   Aug 2 2006, 14:41
|- - zltigo   Цитата(GetSmart @ Aug 2 2006, 17:41) А мо...   Aug 2 2006, 15:15
- - GetSmart   zltigo Да за кого Вы меня принимаете?! Да я......   Aug 2 2006, 15:05
|- - _Bill   Цитата(GetSmart @ Aug 2 2006, 18:05) zlti...   Aug 2 2006, 18:17
|- - zltigo   Цитата(_Bill @ Aug 2 2006, 21:17) Кодchar...   Aug 2 2006, 19:43
|- - _Bill   Цитата(zltigo @ Aug 2 2006, 22:43) Цитата...   Aug 3 2006, 04:37
- - GetSmart   Супер! Компилер съел и не поперхнулся! Ура...   Aug 2 2006, 15:37
|- - zltigo   Цитата(GetSmart @ Aug 2 2006, 18:37) Ну а...   Aug 2 2006, 15:48
|- - rezident   Цитата(GetSmart @ Aug 2 2006, 21:37) Как ...   Aug 2 2006, 15:51
- - GetSmart   Ещё вопросик созрел: Какой максимальной длины можн...   Aug 2 2006, 16:08
|- - rezident   Цитата(GetSmart @ Aug 2 2006, 22:08) zlti...   Aug 2 2006, 16:18
|- - zltigo   Цитата(GetSmart @ Aug 2 2006, 19:08) Вы б...   Aug 2 2006, 16:19
- - GetSmart   Ладно, с числом в первом байте какое-то настоящее ...   Aug 2 2006, 16:32
|- - rezident   Цитата(GetSmart @ Aug 2 2006, 22:32) Мне ...   Aug 2 2006, 16:43
- - GetSmart   Я вобщем-то попробывал вот так: Кодconst xByte ChT...   Aug 2 2006, 16:51
- - diper   восьмеричное 250 == десятичному 168 == шестнадцате...   Aug 2 2006, 16:56
- - GetSmart   Цитата(rezident)А мы с директором вдвоем остаемся?...   Aug 2 2006, 17:00
- - rezident   У меня на такую комбинацию компилятор (для MSP430)...   Aug 2 2006, 17:09
- - GetSmart   diper Благодарю! rezident У меня тоже. И без ...   Aug 2 2006, 17:14
- - GetSmart   Спецы! Всё-таки можно сделать так, как описано...   Aug 2 2006, 17:32
- - GetSmart   Да, да. Я буду нули считать. Тем более, что вход в...   Aug 2 2006, 18:38
- - GetSmart   Цитата(diper)А ответ - "это невозможно" ...   Aug 2 2006, 20:35
|- - zltigo   Цитата(GetSmart @ Aug 2 2006, 23:35) zlti...   Aug 2 2006, 20:49
- - GetSmart   "Имею желание инициализировать массив char на...   Aug 2 2006, 21:05
|- - zltigo   Цитата(GetSmart @ Aug 3 2006, 00:05) PS. ...   Aug 2 2006, 21:17
- - GetSmart   Цитата(zltigo)тогда получится, что несколько ...   Aug 2 2006, 21:40
|- - zltigo   Цитата(GetSmart @ Aug 3 2006, 00:40) Цита...   Aug 2 2006, 22:07
- - GetSmart   Цитата(zltigo).. в ответ на четко заданный вопрос....   Aug 2 2006, 22:43
|- - zltigo   Цитата(GetSmart @ Aug 3 2006, 01:43) Ржун...   Aug 2 2006, 22:56
- - GetSmart   Цитата(zltigo)Если можно, то без подобных проявлен...   Aug 2 2006, 23:23
|- - zltigo   Цитата(GetSmart @ Aug 3 2006, 02:23) Цита...   Aug 3 2006, 07:38
- - GetSmart   Привожу окончательную версию: Основная программа: ...   Aug 3 2006, 00:06
|- - zltigo   Цитата(GetSmart @ Aug 3 2006, 03:06) #def...   Aug 3 2006, 06:13
- - GetSmart   _Bill Мне бы десятичную. Мона?   Aug 3 2006, 05:17
|- - _Bill   Цитата(GetSmart @ Aug 3 2006, 08:17) _Bil...   Aug 3 2006, 05:36
- - GetSmart   Да наверное уже просто на будущее. Потому как в эт...   Aug 3 2006, 06:10
|- - _Bill   Цитата(GetSmart @ Aug 3 2006, 09:10) Да н...   Aug 3 2006, 06:27
- - GetSmart   _Bill Спасибо, я был в курсе этого варианта. Я спе...   Aug 3 2006, 06:40
|- - _Bill   Цитата(GetSmart @ Aug 3 2006, 09:40) _Bil...   Aug 3 2006, 06:44
- - GetSmart   Цитата(zltigo), которой Вы даже не сумели воспольз...   Aug 3 2006, 08:36
|- - zltigo   Цитата(GetSmart @ Aug 3 2006, 11:36) Толь...   Aug 3 2006, 09:01
- - GetSmart   zltigo Я понял это как ругательство к остальным. О...   Aug 3 2006, 09:28
- - zltigo   Цитата(GetSmart @ Aug 3 2006, 12:28) zlti...   Aug 3 2006, 09:54
- - _Bill   Цитата(zltigo @ Aug 3 2006, 12:54) Цитата...   Aug 3 2006, 10:19
- - zltigo   Цитата(_Bill @ Aug 3 2006, 13:19) В IAR э...   Aug 3 2006, 10:31
- - _Bill   Цитата(zltigo @ Aug 3 2006, 13:31) Да, и ...   Aug 3 2006, 10:43


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 13:49
Рейтинг@Mail.ru


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