> Последний известный мне нормальный компилятор плюсов от борланда датируется
> 2000 годом.
>
> По сравнению с VC8 - не то что бы гуано полное. Но реально как стремно уже
> им пользоваться :)
>
> Коваленко Дмитрий.
А почему нельзя сравнить с его ровесником VC5.0 ? :)
На самом деле я не об этом. Я понимаю, что Джефф Оверкэш не только у
меня никогда не станет в авторитете, но все же ...
Ести в IBX такой модуль "IBHeader.pas", где переписаны на паскале
некоторые Си-шные макросы (приведены в скобках), дабы была 100%
чистота. Попробуйте объяснить вот эти куски в скобках и сами процедуры
на Паскале изучающим программирование детям и почувствуйте разницу в
понимании материала. :)
function getb(p: PBSTREAM): Char;
(* The C-macro reads like this:
getb(p) (--(p)->bstr_cnt >= 0 ? *(p)->bstr_ptr++ & 0377: BLOB_get
(p)) *)
begin
Dec(p^.bstr_cnt);
if (p^.bstr_cnt >= 0) then
begin
result := Char(Int(p^.bstr_ptr^) and Int(0377));
Inc(p^.bstr_ptr);
end
else
result := Char(BLOB_get(p));
end;
function putb(x: Char; p: PBSTREAM): Int;
(* The C-macro reads like this:
putb(x,p) ((x == '\n' || (!(--(p)->bstr_cnt))) ? BLOB_put (x,p) :
((int) (*(p)->bstr_ptr++ = (unsigned) (x)))) *)
begin
Dec(p^.bstr_cnt);
if (x = Chr(Int('n') - Int('a'))) or (p^.bstr_cnt = 0) then
result := BLOB_put(x, p)
else
begin
p^.bstr_ptr^ := Char(x);
result := UInt(x);
Inc(p^.bstr_ptr^);
end;
end;
function putbx(x: Char; p: PBSTREAM): Int;
(* The C-macro reads like this:
putbx(x,p) ((!(--(p)->bstr_cnt)) ? BLOB_put (x,p) : ((int) (*(p)-
>bstr_ptr++ = (unsigned) (x)))) *)
begin
Dec(p^.bstr_cnt);
if (p^.bstr_cnt = 0) then
result := BLOB_put(x, p)
else
begin
p^.bstr_ptr^ := Char(x);
Inc(p^.bstr_ptr^);
result := UInt(x);
end;
end;