То, что это C, не означает, что он не ориентирован на объект. См. этот вопрос или любое количество вопросов, названных с некоторой вариацией «Изучение C происходит из объектно-ориентированного фона».
Подобные методы все еще используются сегодня - GIMP построен на GTK + , который включает в себя библиотеку GObject для объектно-ориентированного кодирования на C. Это может быть не лучшим способом, и не может быть "идиоматическим" C, но это может помочь вам.
Другой совет, который я имею по поводу того, как поддерживать сопровождение кода в большом проекте, заключается в использовании библиотек. C не имеет много встроенного, так что больше возможностей вы можете выжать из портативного (открытого источник?) сторонняя библиотека, тем меньше кода вы должны написать (и, следовательно, сохранить).
GTK + еще раз имеет GLib , которая является универсальной библиотекой с множеством функций, которые люди реализовали и реализовали в C. Apache имеет свою собственную, Apache Portable Runtime , что делает что-то очень похожее (но с различными видами функций). Есть также несколько строковых библиотек, которые, вероятно, избавят вас от головной боли, и несколько библиотек специального назначения (Readline для интерактивных подсказок, Ncurses для текстовых интерфейсов, таких как vi и т. Д.), Которые полезны, но не могут играть огромную роль в ваше конкретное заявление.
Лучший выбор в некоторой степени зависит от того, что вы пишете. Если вы пишете ядро операционной системы, драйвер устройства или какое-либо приложение для встроенных систем, не обращайте внимания на все вышеперечисленные советы. Если вы хотите реализовать язык программирования, изучите flex
и bison
, чтобы начать работу с грамматиками в нескольких небольших тестовых проектах, но я рекомендую использовать собственный анализатор и лексер для серьезного проект (если не по какой-либо другой причине, кроме улучшенной отчетности об ошибках).