Исходя из опыта ООП, какие программы / библиотеки на C помогут мне получить «путь C»? - PullRequest
2 голосов
/ 19 февраля 2011

Я давно занимаюсь ООП (C ++ / Java / PHP / Ruby), и мне действительно трудно представить, как большие программы и библиотеки, такие как Linux или Apache, могут быть написаны полностью в императивном стиле.Какими бы были небольшие проекты с открытым исходным кодом C, на которые я мог бы взглянуть, чтобы понять, как все делается в C?

Бонусные баллы, если проект размещен на GitHub.1006 *

Ответы [ 4 ]

5 голосов
/ 19 февраля 2011

В C все делается точно так же, но с менее выраженной поддержкой языка.Вместо того, чтобы создавать класс для инкапсуляции некоторого состояния, вы создаете структуру.Вместо создания членов класса с неявными этими параметрами вы создаете функции, которые явно передают struct * в качестве первого параметра, а затем оперируют над структурой.

Чтобы гарантировать, что инкапсуляция не нарушена, вы можете объявитьstruct в заголовке, но определите его только в файле .c, где он используется.Виртуальные функции требуют больше работы - но опять же, это всего лишь случай размещения указателей на функции в структуре.Что на самом деле более удобно в C, чем в C ++, потому что в C вы получаете возможность заполнять свои vtables вручную, получая довольно хороший уровень контроля над тем, какая часть кода реализует часть какого-либо COM-интерфейса (если вы, конечно, используете COM в C).

1 голос
/ 19 февраля 2011

Посмотрите на GLib для почти канонического примера того, как выполнять объектно-ориентированное программирование на C.

1 голос
/ 19 февраля 2011

Если вы хотите начать с небольшого примера, попробуйте найти исходный код основных утилит CLI для Linux. GNU binutils , make или любая из других утилит GNU имеют полный доступный исходный код и являются относительно небольшими базами кода (некоторые больше других). Обычно проще всего начать с утилиты, которую вы использовали ранее и с которой уже знакомы.

1 голос
/ 19 февраля 2011

Вы можете найти ccan (Комплексная сеть архивов C, смоделированная по CPAN Perl).

В настоящее время он небольшой, но вклады высокого качества. Многие из них сделаны разработчиками ядра Linux.

Почти все там тоже попадает в категорию "несколько тысяч LOC" или меньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...