Всем привет!
В проекте, по ходу пьессы, пришлось создавать вот такой вот массив:
void (**pFunc)( void(*)( void(*)() ) ) = new ( void (*[2])( void(*)( void(*)() ) ) );
Случайно зацепив глазом — не всем сразу понятно, что к чему.
В таком виде более читабельно:
typedef void(*FUNC_1)();
typedef void(*FUNC_2)(FUNC_1);
FUNC_2 *pFunc = new (FUNC_2[2]);
Здравствуйте, Лекс, Вы писали:
Л>Всем привет!
Л>В проекте, по ходу пьессы, пришлось создавать вот такой вот массив:
Л>Л>void (**pFunc)( void(*)( void(*)() ) ) = new ( void (*[2])( void(*)( void(*)() ) ) );
Л>
Л>Случайно зацепив глазом — не всем сразу понятно, что к чему.
Л>В таком виде более читабельно:
Л>Л>typedef void(*FUNC_1)();
Л>typedef void(*FUNC_2)(FUNC_1);
Л>FUNC_2 *pFunc = new (FUNC_2[2]);
Л>
Л>
Возможно, но это не одно и тоже: не хватает одного уровня.
Лазар
Здравствуйте, Лазар Бешкенадзе, Вы писали:
ЛБ>Возможно, но это не одно и тоже: не хватает одного уровня.
ЛБ>Лазар
Вы правы
void f1()
{
std::cout << "f1\n";
}
void f2( void(*p)() )
{
std::cout << "f2\n";
p();
}
void f3( void(*p)(void(*)()) )
{
std::cout << "f3\n";
p(f1);
}
void main()
{
void (**pFunc1)( void(*)( void(*)() ) ) = new ( void (*[2])( void(*)( void(*)() ) ) );
typedef void(*FUNC_1)();
typedef void(*FUNC_2)(FUNC_1);
typedef void(*FUNC_3)(FUNC_2);
FUNC_3 *pFunc2 = new (FUNC_3[2]);
pFunc1[0] = pFunc1[1] = pFunc2[0] = pFunc2[1] = f3;
pFunc1[0](f2);
//pFunc1[1](f2);
//pFunc2[0](f2);
//pFunc2[1](f2);
}
f3
f2
f1