LINUX.ORG.RU

Утилита для обяснения Си-обьявлений


0

2

В Дебиане давно пользовался утилитой, которая работала приблизительно так:

==> explain int A[8]
declare array(8) of integers
==> explain char f(int a, float b)
declare function (arguments a as integer, b as float) returning char
==> не_помню_название_команды array(8) of array of pointers to int
(*int) A[8][]

И так далее. Утилита полезная тем, что с её помощю пожно понять сложные сишные обявления.

Вопрос на засыпку : кто-нибуть знает название сей утилиты ? :)

Ответ на: комментарий от geekless

Человек — не робот, иногда просто сложно понять некоторые вещи на сях. А такие утилиты помогают секономить время и уменьшить шанс возникновения ошибок в коде.

rumly111
() автор топика
Ответ на: комментарий от rumly111

Учитывая:

иногда просто сложно понять некоторые вещи на сях


то:

такие утилиты помогают … уменьшить шанс возникновения ошибок в коде


== 4.2.

anonymous
()
Ответ на: комментарий от rumly111

> Человек — не робот, иногда просто сложно понять некоторые вещи на сях.

лицоладонь.flv

А такие утилиты помогают секономить время и уменьшить шанс возникновения ошибок в коде.

Ага, на каждое объявление, чуть более длинное, чем char *p, будешь лазить в эту программу? Очень экономит время, ага.

Я б еще понял, если бы кто-нибудь пожаловался, скажем, на нечитаемые пятиэтажные регэкспы... Там реально бывает без поллитры не разобрать некоторые творения.

Выражения типов в Си, конечно, не самые логичные на свете, но ничего сложного там нет. Всё прекрасно читается при минимальной практике. Может стоит просто открыть учебник языка и обновить свои навыки?

geekless ★★
()
Ответ на: комментарий от geekless

если это не читается с первого взгляду - топрограммиста намыло

namezys ★★★★
()
Ответ на: комментарий от rumly111

Можно примеры таких объявлений? Было бы интересно проверить свою квалификацию.

P.S. Заранее спасибо.

trex6 ★★★★★
()
Ответ на: комментарий от trex6

Точно уже не помню, а посмотреть пока не могу. Но нужно было обявить масив указателей на функции, возвращающие указатель на воид. У функций 2 аргумента.

С cdecl удалось решить проблему легко :)

rumly111
() автор топика
Ответ на: комментарий от rumly111

> Но нужно было обявить масив указателей на функции, возвращающие указатель на воид. У функций 2 аргумента.

void *(f[])(int, int);

geekless ★★
()
Ответ на: комментарий от Deleted

> char (*(*(* const x[3])())[5])(int)

А теперь покажи программу, где реально используются такие декларации.

geekless ★★
()
Ответ на: комментарий от note173

> void *(f*[])(int, int)

Не знаю, какой это язык, но точно не Си.

geekless ★★
()

> обяснения

обьявлений

Язык просто надо знать.

anonymous
()
Ответ на: комментарий от note173

почти :)

void* (*f[15])(int,int)

Такой вариант тоже катит, но это вроде не по стандарту

void* (f[15])(int,int)

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