Подтвердить что ты не робот

Лучшие статьи об организации файлов кода в C

Можете ли вы порекомендовать мне, что мне следует читать/учиться, чтобы сделать хорошо организованный код на C?

Одна из вещей, которые я хочу изучить, - это принципы разделения проекта в файлах .h и .c, что происходит где и почему, имена переменных, когда использовать глобальные переменные...

Меня интересуют книги и статьи, которые касаются этой конкретной проблемы.

4b9b3361

Ответ 2

В отношении макета файлов не так много альтернатив.

Разделение обычно является одним из следующих (пакет здесь представляет собой одну библиотеку или двоичный файл):

  • .../проект/.../пакет/модуль. {С, ч}
  • .../project/.../{src, include}/package/module. {c, h}//заголовки не-интерфейса идут в src
  • .../project/.../package/{src, include}/module. {c, h}//заголовки неинтерфейса перейдите к src

Разделение (1) удобно в том, что все файлы, принадлежащие определенному пакету, хранятся в одном каталоге, поэтому пакет можно легко перемещать, но при таком подходе отключение заголовков API от частных и обнаружение изменений API не является тривиальным, (2) и (3) очень похожи, они делают триггеры API и API изменений тривиальными, тогда как (2) немного легче для случая, когда вы всегда выпускаете весь проект, и (3) немного лучше, когда вы выпускаете отдельные пакеты (например, для исправления)

В любом проекте C/С++ обычно имеются следующие общие пакеты:

  • Общие макросы и типы данных
  • Папка регистрации
  • Пакет загрузочного приложения (в случае более 1 двоичных файлов в проекте).

Ответ 3

Конкретно для unix (а не c, natch), но тем не менее:

Рекурсивный анализ считается вредоносным

С описанной структурой сборки вы можете позволить себе использовать много файлов. Поэтому каждый логический блок получает заголовок и исходный файл.

Ответ 4

Я думаю, что лучшее образовательное чтение, которое вы собираетесь рассказать на эту тему, читает что-то вроде источника ядра Linux. Он получил хороший исходный макет и в основном является стандартным крупным проектом C. Здесь приведено руководство по тому, как исходные файлы должны быть объединены для источника BSD.

Серьезно, просто начните читать источник ядра и почувствуете, как все складывается. Очевидно, это очень хорошо спланированный проект.