> Последний известный мне нормальный компилятор плюсов от борланда датируется > 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;