LINUX.ORG.RU

динамический массив указателей на функции в C


0

0

Вопрос тот же чо и http://www.linux.org.ru/view-message.jsp?msgid=259061&scroll=group&ba...

только вместо статического массива нужен динамический, т.е. вместо void (*fpa[3])(); надо void (**fpa)(); *fpa = new (void(*)())[3]; //здесь ошибка только как это записать я не знаю

и еще, как превести указатель на void к указателю на функции

Re: динамический массив указателей на функции в C

> как превести указатель на void к указателю на функции

(void (**)()) void_pointer

Только так делать по стандарту нельзя, хотя с большинством компиляторов будет работать.

> как это записать я не знаю

Если все же будешь кастить из void* - man 3 malloc

grob ★★★★★ ()

Re: динамический массив указателей на функции в C

>*fpa = new (void(*)())[3];

Дык C или C++.

Если С, то нужен malloc,

Если С++, то в нем нельзя писать выражения для типов в new, нужно через typedef

typedef void (*T)(void);

T* fpa = new T[3];

ival ★★ ()

Re: динамический массив указателей на функции в C

гм, а если так:

typedef void (*some_function_def) (void);

some_function_def *def_array = 
    (some_function_def *)malloc (sizeof (some_function_def *) * FUNC_COUNT);

/* вызов */
def_array[2] ();

Да, кстати, в чистом C нет вызова new.

jr_A ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.