· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› C-функция, которая возвращает неопределенное число

. 1 . 2 . >>

Посл.отвђт Сообщен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;
}

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.084