{$define sum :=
(a + b)
{$undef a} {$undef b}}
Это не макро-расширение, и инлайн-вычисление.
- Код: Выделить всё
(size+1)*sizeof(wchar_t)
Модератор: Модераторы
{$define sum :=
(a + b)
{$undef a} {$undef b}}
(size+1)*sizeof(wchar_t)
{$mode delphi}
procedure Hellow;
var
a,b: integer;
function sum: integer; inline;
begin
result:=a+b+sizeof(widechar);
end;
begin
a:=5;
b:=2;
writeln(sum);
end;
begin
hellow;
end.
есть вложенные функции, которые инлайнятся
debi12345 писал(а):Далеко не всегда макросы должны возвращать некий результат (который можно обернуть в функции).
Как бы признаение что язык Си сам по себе не является достаточно удобным, по-этому сверху есть костыль в виде препроцессора.
debi12345 писал(а):к имеющемуся функционалу хэдеров
что есть "функционал хэдэров"?
debi12345 писал(а):Любой, кто работает с С/С++ , тот знает
что людям от вредных, но приятных привычек избавиться трудно
debi12345 писал(а):Вы когда-нибудь расширения для PostgreSQL писАли (голый "С") ? Там весь маршаллинг и менеджемент памяти и строк (самый кошмар для "С") сделан на дифайнах (местами ППЦ каких сложных) - без них писАть расширения было было на порядок сложнее.
Но если перпроцессор, это решение для языка Си, почему то же самое решение нужно тащить в другие языки? в частности в паскаль?!
если писать расширения для PostgreSQL на голом Си, это наказание, то почему бы не обратиться к другим инструментам?
debi12345 писал(а):Как отмечалось, у хэдеров есть (а может и был) большой - для сторонних проектов не нужно тащить-загружать все исходники
#define PG_MODULE_MAGIC_DATA \
{ \
sizeof(Pg_magic_struct), \
PG_VERSION_NUM / 100, \
FUNC_MAX_ARGS, \
INDEX_MAX_KEYS, \
NAMEDATALEN, \
FLOAT4PASSBYVAL, \
FLOAT8PASSBYVAL \
}
#define SRF_RETURN_NEXT(_funcctx, _result) \
do { \
ReturnSetInfo *rsi; \
(_funcctx)->call_cntr++; \
rsi = (ReturnSetInfo *) fcinfo->resultinfo; \
rsi->isDone = ExprMultipleResult; \
PG_RETURN_DATUM(_result); \
} while (0)
#define SET_4_BYTES(value) (((Datum) (value)) & 0xffffffff)
А Windows.pas с исходниками винды идёт?
debi12345 писал(а):Чтобы не задавать ехидных вопросов, загляните в исходники PostgreSQL и прикиньте как их паскализировать
debi12345 писал(а):как это эмулировать без максроса
debi12345 писал(а):Этот дифайн тоже спасает внимание
Exit ( SRF_RETURN_TEXT( ) );
debi12345 писал(а):Макросы - логичный довесок к имеющемуся функционалу хэдеров
Сейчас этот форум просматривают: Google [Bot] и гости: 232