Как бывают полезны typedef
От: Лекс Россия  
Дата: 24.09.06 17:10
Оценка: +3
Всем привет!

В проекте, по ходу пьессы, пришлось создавать вот такой вот массив:
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]);

C Уважением,
Андрей.
Re: Как бывают полезны typedef
От: Лазар Бешкенадзе СССР  
Дата: 25.09.06 07:19
Оценка:
Здравствуйте, Лекс, Вы писали:

Л>Всем привет!


Л>В проекте, по ходу пьессы, пришлось создавать вот такой вот массив:

Л>
Л>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]);
Л>

Л>

Возможно, но это не одно и тоже: не хватает одного уровня.

Лазар
Re[2]: Как бывают полезны typedef
От: Лекс Россия  
Дата: 25.09.06 08:34
Оценка:
Здравствуйте, Лазар Бешкенадзе, Вы писали:

ЛБ>Возможно, но это не одно и тоже: не хватает одного уровня.


ЛБ>Лазар


Вы правы

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
C Уважением,
Андрей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.