понедельник, апреля 18, 2011

Inception in C


via Moriarty

14 коммент.:

Unknown комментирует...

Ну наверное как-то так:

typedef char** array_of_pointer_to_char;

typedef array_of_pointer_to_char (*function_returning_pointer_to_array_of_pointer_to_char);

typedef function_returning_pointer_to_array_of_pointer_to_char* pointer_to_pointer_to_function_returning_pointer_to_array_of_pointer_to_char;

int main(int argc, char *argv[])
{
pointer_to_pointer_to_function_returning_pointer_to_array_of_pointer_to_char *foo[8];
return 0;
}

Alex S. комментирует...

Все гораздо проще.

char *(*(**foo [][8])())[];

http://www.unixwiz.net/techtips/reading-cdecl.html

Unknown комментирует...

> Все гораздо проще.

Действительно. :) Только без инструкции не понятно. :)

Unknown комментирует...

> а есть ещё собственно такая программка cdecl, которая как раз и формирует объявление типа, используя такое вот описание

http://cdecl.org/

Aquary комментирует...

"Всякое бывало, но так хорошо - в первый раз." (с)

Это просто праздник какой-то :)))

Анонимный комментирует...

интересный этот cdecl.org
спасибо, пригодился!

Анонимный комментирует...

А что за хрень выдает cdelc.org в своем третьем примере?

Andrew комментирует...

А есть еще варианты?

Анонимный комментирует...

А откуда картинка взята?

Alena комментирует...

Анонимный
А откуда картинка взята?

Я ее взяла с http://m0riarty.ya.ru/. Откуда он ее взял я не знаю.

Анонимный комментирует...

char *(*(**foo [][8])())[];

Это точно то, что написано на картинке? смущают последние квадратные скобки

Alena комментирует...

Анонимный

Это точно то, что написано на картинке? смущают последние квадратные скобки

Все правильно, последние квадратные скобки - это последний array

Анонимный комментирует...

т.е. получается одномерный массив чаров, в котором каждый элемент - двумерный массив указателей на функцию? Без последний квадратных скобок получается вывернутый массив указателей на функцию, а с ними что-то я не понимаю, что выходит :(

Анонимный комментирует...

Ха, в вижуал си++ не поддерживаются функции, возвращающие массив, потому и смущали скобочки вконце =)