|
Пример взят из 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