Скрыть
мужик предлагает превратить C в C++
http://ramlamyammambam.livejournal.com/9318.html
Описанные ниже расширения языка Си позволяют простыми средствами превратить его в объектно-ориентированное средство разработки. При этом достигается совместимость с tagged-типами языка Ада.
1) Описание новых структур как дополнение старых:
struct foo : bar {
...
};
}
Поля новой структуры дописываются в хвост к полям старой структуры. Разрешается неявное преобразование указателя на расширенную структуру к указателю на базовую.
2) Описание структур с набором интерфейсных функций:
code{
struct stream {
...
interface:
void putch (char c);
int getch (void);
int peekch ();
void flush ();
int eof ();
};
}
В структуре создается скрытое первое поле, указывающее на таблицу указателей на функции:
code{
struct stream {
struct {
void (*putch) ();
int (*getch) ();
int (*peekch) ();
void (*flush) ();
int (*eof) ();
} *interface;
...
};
}
3) При определении интерфейсной функции указывается имя соответствующей структуры. Добавляется скрытый аргумент this:
code{
void putch (char c) : interface struct stream
{ ... }
}
превращается в:
code{
void putch (struct stream *this, char c)
{ ... }
}
4) Вызов интерфейсной функции:
code{
stream->putch ('x');
}
транслируется так:
code{
stream->interface->putch (stream, 'x');
Дело за малым - нужен энтузиаст, готовый хакнуть GCC. :-)
мужик предлагает превратить C в C++
бред какой. Не нравится С - пущай и юзает С++ или ту же Аду. Для чего превращать одно в другое, причём такое же как уже есть.
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13