|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 23, 2003 21:45:53 · Поправил: volodya Народ, чего-й то меня клинит. На С мне треба функцию, которая будет возвращать неопределенное число int и char[?] параметров. Как это можно сделать? Через цепочку? Aquila А ты знал, что если длина заголовка поста выше определенного числа, то он обрезается? У меня отрезалось слово "параметров"! |
|
|
Дата: Июл 23, 2003 21:59:28 Кажись, придумал. Буду делать цепочку, а в цепочку приделаю указатель на структуру из int/char[?]. Ой, мама, роди меня в зад. |
|
|
Дата: Июл 23, 2003 22:06:38 · Поправил: Quantum а в цепочку приделаю указатель на структуру из int/char[?]. Можно глобальный массив из union'ов (char & int), вроде myUnion myArray[256]; Ф-ция заполняет этот массив и возвращает количество записанных значений. |
|
|
Дата: Июл 23, 2003 22:33:48 myUnion myArray[256]; - не подходит, т.к. размер массива фиксирован. Или ты предлагаешь динамически создавать union в памяти, а потом говорить - сколько создано? И еще, union мне не подхожит, т.к. я должен хранить совместно char[14], например, и int. |
|
|
Дата: Июл 23, 2003 22:47:59 Всё ясно. Тогда, действительно, только цепочку или лучше применить OOP и полиморфизм и пусть сам компилятор разжёвывает. |
|
|
Дата: Июл 23, 2003 23:07:13 · Поправил: volodya [ща будет вопрос] |
|
|
Дата: Июл 23, 2003 23:35:46 Раз идея с полиморфизмом не прошла, заюзай хоть include\list чтоб не изобретать велосипед (для VC6). Не очень оптимизированный класс, но удобный в использовании. Объявляется примерно так: #include <list> . . . list<bla> myList; // bla - это тот структ . . . myList.begin() // возвращает указатель на начало цепочки (myList.begin())++ // это второй элемент в цепочке delete((myList.end())--) // удалить предпоследний элемент и т.д. |
|
|
Дата: Июл 24, 2003 00:03:31 Это неплохо, но я сейчас пишу на С :( Кроме того, код будет кросс-компилирован под Solaris. Поэтому только С. Другой проект уже будет на С++. Ладно, Quantum, спасибо тебе. Сам разберусь. Ох. |
|
|
Дата: Июл 24, 2003 00:29:06 · Поправил: volodya ОК, я отказался от этой затеи. Дело в том, что по начальной задумке структура должна содержать int и char-массив неизвестной длины. Кроме того, для формирования списка мне надо каждый раз создавать структуру заново. Т.е. структура должна быть динамически создана в памяти - malloc (sizeof(???)), что не так уж и просто. Сначала надо определять длину строки, совать ее в структуру, определять размер структуры, цеплять ее к списку, потом работать со списком, потом его освобождать. Код высвобождения памяти и malloc будет разнесен по файлу нехилых размеров - потенциальная утечка... Да пошло оно в жопу! Я его тупо захерачил fprintf :))))) А вообще, уже давно пора на STL переходить. Мне противно, что я делаю херню, но еще противнее сидеть до позеленения над изящным решением, которое все равно никто не оценит. Хотя потом еще подумаю, может быть :) |
|
|
Дата: Июл 24, 2003 00:45:38 volodya А вообще, уже давно пора на STL переходить Что за STL? которое все равно никто не оценит. Что наша жизнь... Куда делся раздел COMPO? |
|
|
Дата: Июл 24, 2003 00:49:48 #include <list> - Standard Template Library списки, ассоциативные массивы, строки и т.п. :) Что наша жизнь... Да, ты прав. Но я уже неоднократно имел разборки с Edmondom по этому поводу, я не считаю себя программистом :) Куда делся раздел COMPO? Не знаю :) |
|
|
Дата: Июл 24, 2003 01:13:10 Мдя... Я еще подумал. Можно, как оказалось, в моем конкретном случае прицепить к списку структурку из 2-х int. И всего делов. Можно и без printf обойтись :) |
|
|
Дата: Июл 24, 2003 01:39:46 Standard Template Library Мдя... даже для несчастных либов от Hewlett-Packard особое название придумали... я не считаю себя программистом :) Эту фразу нужно записать :) |
|
|
Дата: Июл 24, 2003 04:14:20 Эту фразу нужно записать :) Как говорила одна моя подруга: "базара ноль". |
|
|
Дата: Июл 24, 2003 09:38:41 В лучших традициях микрософта 8) struct result { int nparams; char param[]; } result* func() { result* r; r=(result*)malloc(sizeof(*r)+sizeof(r->param[0])*N); r->nparams=N; r->param[0]=x0; r->param[1]=x1; ... return r; } |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.084 |