Здесь все правильно
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено smav 05 ноября 2003 г. 18:10
В ответ на: у меня проблема со скобками отправлено Max_Fly 05 ноября 2003 г. 17:30

Пример взят из bc3.1 (я только убрал нестандартные ключевые слова _cdecl и _far)
Там нужно учесть что в С void f() эквивалентно void f(int), так
как int - тип по умолчанию. Если быть последовательным, то они и последний (int) должны были бы заменить на ():
void (* signal(int __sig, void (* func)()))();

Более правильно писать так (взято из другого файла signal.h)
void (* signal(int __sig, void (* func)(int))) (int);
Я просто не могу понять как нормальный человек может разбирать подобные декларации. Я когда первый раз на это посмотрел, даже не понял что объявляется - функция или переменная :)
Причем этот монстр находится не где-нибудь, а в стандартном заголовочном файле, повторяясь на разных платформах.
Этот пример я привел для того чтобы показать, к чему приводит "лаконичность" (которая здесь приводилась как главное преимущество С vs Pascal)

Сравните с паскалевским описанием:
function signal(__sig:integer,func:procedure):procedure(a:int);


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru