LINUX.ORG.RU

История изменений

Исправление bormant, (текущая версия) :

А в паскалеподобных было бы так:

не совсем. В паскалях либо явно ^тип, либо через явно именованный тип. Ну и до кучи, раз был помянут, тип указателя на функцию; получение самой точки входа в зависимости от диалекта по @func или просто по имени func.

type
  PInteger = ^Integer;
  LessFunc = function (a, b: Integer): Boolean;

procedure sort_(a: array of Integer; IsLess: LessFunc);
// ...
  if IsLess(a[i],a[i+1]) then // ...

var
  a, b: ^Integer;
  c, d: PInteger;

За синтаксис указателей на функции вообще бить нужно

А этот синтаксис там не специальный какой-то, он из-за установленного приоритета операций сам таким получился.

void sort_(int* a, int n, bool (*IsLess)(int, int)) {
// ...
  if ( (*IsLess)(a[i],a[i+1]) )
Но (*) разрешают не писать, и тогда все вроде как и нормально.

Исходная версия bormant, :

А в паскалеподобных было бы так:

не совсем. В паскалях либо явно ^тип, либо через явно именованный тип. Ну и до кучи, раз был помянут, тип указателя на функцию; получение самой точки входа в зависимости от диалекта по @func или просто по имени func.

type
  PInteger = ^Integer;
  LessFunc = function (a, b: Integer): Boolean;

procedure sort_(a: array of Integer; IsLess: LessFunc);
// ...
  if IsLess(a[i],a[i+1]) then // ...

var
  a, b: ^Integer;
  c, d: PInteger;

За синтаксис указателей на функции вообще бить нужно

А этот синтаксис там не специальный какой-то, он из-за установленного приоритета операций сам таким получился.

void sort_(int* a, int n, bool (*IsLess)(int, int)) {
// ...
  if ( (*IsLess)(a[i],a[i+1]) )