Когда целесообразно использовать C в качестве объектно-ориентированного языка? - PullRequest
5 голосов
/ 01 декабря 2011

Есть много отличных ответов, как можно смоделировать объектно-ориентированные концепции с помощью C. Чтобы назвать несколько:

Когда уместно ли использовать такое моделирование и не использовать языки, которые изначально поддерживают объектно-ориентированные методы?

Сильно связанные:

Ответы [ 3 ]

4 голосов
/ 01 декабря 2011

Я приведу вам одну единственную причину, которую я знаю, потому что это относится ко мне:

Когда вы разрабатываете программное обеспечение для уникальной платформы, и единственный доступный компилятор - это Cкомпилятор .Это часто случается в мире встроенных микроконтроллеров.

2 голосов
/ 01 декабря 2011

Просто приведу другой пример: довольно много ядра Linux x86 использует C, как если бы это было C ++, когда объектная ориентация кажется естественной (например, в VFS).Ядро написано на ассемблере и C (если это не изменилось в ядре 3.0).Кодеры ядра создают макросы и структуры, иногда даже именуемые аналогично терминам C ++ (например, for_each_xxx), которые позволяют им кодировать как-будто.Как уже отмечали другие, вы никогда не выберете C, если начнете сильно объектно-ориентированную программу;но когда вы настраиваете код на C для добавления объектно-ориентированных функций, вы можете.

1 голос
/ 01 декабря 2011

Когда вы хотите кроссплатформенную основу для объектно-ориентированных API.В качестве примера можно привести Core Foundation от Apple .Будучи полностью C, он может быть легко перенесен, но предоставляет чрезвычайно богатый набор непрозрачных объектов для использования.

Хорошим примером его гибкости является то, что многие из его типов «бесплатны», соединены с типами из Foundation (набора истинных библиотек OO Objective-C).Многие типы из Core Foundation могут быть использованы, вполне естественно, в API-интерфейсах Foundation и наоборот.Трудно увидеть, как это работает так хорошо без каких-либо концепций ОО, присутствующих в библиотеках Core Foundation.

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