|
|
  |
Имею желание объявить массив строк с переменной длиной, Но не имею возможности :-( |
|
|
|
Aug 3 2006, 05:36
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(GetSmart @ Aug 3 2006, 08:17)  _Bill Мне бы десятичную. Мона? Нет!! Тут либо 8, либо 16. А почему именно 10?
|
|
|
|
|
Aug 3 2006, 06:27
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(GetSmart @ Aug 3 2006, 09:10)  Да наверное уже просто на будущее. Потому как в этой задаче я передумал первым байтом помещать число строк. А вообще, писать удобней в десятичной такие числа как количество чего-то. Тот, кто решил делать в восьмеричной был наверно очень умным. Или я что-то не понимаю? PS. А была такая хорошая концовка  Ну, выбор 8-ричной системы счисления был сделан по причинам исторического характера. Но это уже другая история. Что касается Вашего случая, то я бы организовал массив строк переменной длины в виде массива указателей на них, как Вам советовали выше. Причем, в качестве ограничителя таблицы удобно использовать признак NULL (0). Тогда можно обойтись и без знания количества строк в таблице. Можно и не пользоваться ограничителем таьлицы, а определять количество строк через оператор sizeof.
|
|
|
|
|
Aug 3 2006, 06:44
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(GetSmart @ Aug 3 2006, 09:40)  _Bill Скорее даже исполнились мои самые лучшие ожидания. Ну и замечательно!!!
|
|
|
|
|
Aug 3 2006, 07:38
|

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

|
Цитата(GetSmart @ Aug 3 2006, 02:23)  Цитата(zltigo) Если можно, то без подобных проявлений эмоций - у меня к ним идиосинкразия с некоторых пор. Конечно можно. Как и без 'лохов' тоже можно было. Вот и без 'лохов' ТОЖЕ. Это определение к Вам здесь не употреблялось, а именно Ваш стиль общения у меня, увы, теперь вызывает :-( некоторые ассоциации с нашим seeаttack. Он заходя на форумы задавал невнятные вопросы после ответов заявлял, что все это и так знал и зачастую не поняв ответа рекомендовал всем учиться, выдавал краткую характеристику участикам и удалялся обещая вернуться с лекцией о зимовке раков. Упаси Бог, я Вас с ним НЕ РОВНЯЮ, но некоторые ассоциации вызывающие дискомфорт в общении в таком стиле у меня есть. Прежде всего, если задали вопрос - сочтите за труд выслушать и ПОНЯТЬ ответ. А не дав себе труда даже разобратся бросаться подобными репликами: Цитата zltigo Вы бы сами почитали книжку. Ну или поспорили с компилятором. Потому как ему не нравися ваше второе описание. Это то, которое и rezident предложил. В ответ на совершенно правильную рекомендацию по вопросу: Цитата Только ещё одын маленький вопрос: Как вставить первым байтом число? , которой Вы даже не сумели воспользоваться. Код char string[] = { 100,101,102,"eprst"
};
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 3 2006, 08:36
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(zltigo) , которой Вы даже не сумели воспользоваться. Код char string[] = { 100,101,102,"eprst"
}; А это должно работать? У меня в компилере не работает почему-то. Цитата Вот и без 'лохов' ТОЖЕ. Это определение к Вам здесь не употреблялось, а именно Ваш стиль общения у меня, увы, теперь вызывает :-( некоторые ассоциации с нашим seeаttack. На счёт 'лохов' - я знаю. Только укажите - кто из них? А то я сам не догадаюсь. Думаю у многих после прочтения этой ветки изменится мнение и о Вашем стиле общения. Что касается seeаttack - хотелось бы услышать мнение более непредвзятых читателей. Я же честно написал в заглавии топика, что знаю как сделать через указатели. Потом честно написал, что хочу сделать через макросы, но не знаю как. Я где-то соврал? Название не самое удачное? Но ведь не полное враньё. Дискомфорт... А вообще, комплексы есть у всех. Тока надо с ними бороться. А я уж думал закончить тему на очень удачной ноте. Не судьба видно.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Aug 3 2006, 09:01
|

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

|
Цитата(GetSmart @ Aug 3 2006, 11:36)  Только укажите - кто из них? А то я сам не догадаюсь. Например, вот "этот": Цитата zltigo Вы бы сами почитали книжку. Ну или поспорили с компилятором. Потому как ему не нравися ваше второе описание. Это то, которое и rezident предложил. Надеюсь с третьего раза удалось догадаться? Цитата А это должно работать? У меня в компилере не работает почему-то. Безвариантно работает первый вариант с "/15qwerty". У второго нет особых причин не работать, но разработчики конкретного компилятора могут иметь свое мнение. Цитата(GetSmart @ Aug 3 2006, 11:36)  Я же честно написал в заглавии топика, что знаю как сделать через указатели. Потом честно написал, что хочу сделать через макросы, но не знаю как. Я где-то соврал? Название не самое удачное? Но ведь не полное враньё. 1.Слово "вранье" мною не упоминалось. 2.Возражения были ИСКЛЮЧИТЕЛЬНО по вопросу ПОСТФАКТУМ изменению названия топика, причем с объяснением причины: Цитата тогда получится, что несколько 'лохов' пытались нести чушь в ответ на четко заданный вопрос. , почему-то вызвавшим безудержное веселье.
Сообщение отредактировал zltigo - Aug 3 2006, 09:04
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 3 2006, 09:54
|

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

|
Цитата(GetSmart @ Aug 3 2006, 12:28)  zltigo Надеюсь инцендент исчерпан. Абсолютно. Насчет язвительности, то это в полной мере относится и ко мне :-(. Похоже это возрастное, прошу учитывать при личном общении :-) К вопросу о char string[] = { 100,101,102,"eprst" }; 1. IAR выругался 2. Watcom сделал все "правильно". Кто из них больше прав? При пристальном рассмотрении даже не знаю. Watcom поступает более привычно и по "человечески" естественнее и исходя из того, что мы занимается инициализацией массива и указание на то, что массив байтовый естественнейшим образом требует помещения в него содержимого строки а не указателя на нее, что и делает без лишних вопрорсов. Подход IAR, более формален, поскольку "string" есть указатель на него, то чего-же его мне суете место байта? А вариант char string[] = "eprst", я пропущу, поскольку это подпадает под инициализацию указателя, а не массива. Я бы сейчас был за компромис - поступить как Watcom, но выдать Warning (не ошибку!).
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 3 2006, 10:19
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(zltigo @ Aug 3 2006, 12:54)  Цитата(GetSmart @ Aug 3 2006, 12:28)  zltigo Надеюсь инцендент исчерпан.
Абсолютно. Насчет язвительности, то это в полной мере относится и ко мне :-(. Похоже это возрастное, прошу учитывать при личном общении :-) К вопросу о char string[] = { 100,101,102,"eprst" }; 1. IAR выругался 2. Watcom сделал все "правильно". Кто из них больше прав? При пристальном рассмотрении даже не знаю. Watcom поступает более привычно и по "человечески" естественнее и исходя из того, что мы занимается инициализацией массива и указание на то, что массив байтовый естественнейшим образом требует помещения в него содержимого строки а не указателя на нее, что и делает без лишних вопрорсов. Подход IAR, более формален, поскольку "string" есть указатель на него, то чего-же его мне суете место байта? А вариант char string[] = "eprst", я пропущу, поскольку это подпадает под инициализацию указателя, а не массива. Я бы сейчас был за компромис - поступить как Watcom, но выдать Warning (не ошибку!). В IAR это связано, возможно, с тем, что инициализирующие строки располагаются в отдельном сегменте, нежели числовые данные. Какое сообщение компилятор выдает? Что же касается варианта char string[] = {"eprst"}; то это один из вариантов инициализации массива типа char, эквивалентный char string[] = {'e', 'p', 'r', 's', 't', \0};
Сообщение отредактировал _Bill - Aug 3 2006, 10:22
|
|
|
|
|
Aug 3 2006, 10:31
|

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

|
Цитата(_Bill @ Aug 3 2006, 13:19)  В IAR это связано, возможно, с тем, что инициализирующие строки располагаются в отдельном сегменте, нежели числовые данные. Нет. Это причины общего порядка. Цитата Что же касается варианта char string[] = {"eprst"}; то это один из вариантов инициализации массива типа char, эквивалентный char string[] = {'e', 'p', 'r', 's', 't', \0}; Да, и при этом Код char string[] = { 15, 'e', 'p', 'r', 's', 't', \0}; Можно а Код char string[] = {15, "eprst"}; Нельзя, поскольку IAR компилятор считает, что это уже: Код char *pointer = "eprst"; char string[] = {15, pointer};
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 3 2006, 10:43
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(zltigo @ Aug 3 2006, 13:31)  Да, и при этом Код char string[] = { 15, 'e', 'p', 'r', 's', 't', \0}; Можно а Код char string[] = {15, "eprst"}; Нельзя, поскольку IAR компилятор считает, что это уже: Код char *pointer = "eprst"; char string[] = {15, pointer}; Да, вероятнее всего, дело именно в этом.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|