2014-11-06 3 views
1

Я изучаю C язык программирования. Чтобы четко понять, как большие проекты написаны на C. Я просмотрел несколько проектов Trending C на Github. Это проект, написанный на C: Here. Одна вещь, которую я не понимаю, - это то, что в каталоге проекта так много каталогов: bin, conf, contrib, docs, images, m4, man, notes и т. Д. Единственными папками, которые я понимаю, является папка src, в которой есть все файлы заголовков и файлы c. Но есть еще одно сомнение, связанное с исходной папкой. Каждый заголовочный файл имеет файл C с тем же именем. Я могу скомпилировать основной файл, но как файл main.c связан с другими файлами C. Я предполагаю, что в других файлах C есть все функции, которые вызывает их главный файл &. main.c вызвал файл заголовка, который имеет все прототипы fucntion. Сейчас я немного запутался в этом большом управлении проектами. Пожалуйста, помогите мне понять. Также, где читать об этом, чтобы я мог изучить этот материал.Как скомпилирован проект github и организован в основном проект C на Github

Что на самом деле я хочу спросить: если у меня есть 5 файлов

main.c, header.h, function1.c, function2.c, fuction3.c. Как я могу использовать 3 функции, написанные в этих трех файлах function1,2,3.c.

Я хочу узнать, как построить большой проект и управлять им в разных файлах и способом размещения файлов на GIT. Даже если я создам проект, я напишу 1000 строк в том же файле .c, что является полным беспорядком. Я хочу научиться управлять этой четкостью и организацией проектов. Где узнать все это?

ответ

2

Одна вещь, я не понимаю, почему так много папок в директории проекта: BIN, конф, CONTRIB, документы, изображения, m4, man, notes и т. д.

Потому что часть программного обеспечения состоит не только из исходного кода.Много дополнительного материала требуется:

  • документацию (в /man и docs);
  • сценарии сборки (обычно для стандартных стандартных инструментов настройки Unix «autoconf», «automake», «M4» и «make», расположенных в папке conf и/или m4);
  • ресурсы, которые используются графическим интерфейсом, если программа имеет один (/images);
  • т.д.

Я могу компилировать основной файл но как main.c файл связан с другими файлами C

Используя кусок программного обеспечения под названием линкер. Множество компиляторов (в том числе популярных наборов инструментов GCC и Clang) по умолчанию ссылаются на системный компоновщик (если вы не скажете им, что они должны компилировать, а не ссылку), что, в свою очередь, решает ссылки между исходными файлами и создает окончательный исполняемый файл. Подробнее о процессе компиляции C here.

Я хочу узнать, как построить большой проект и управлять этим в разных файлах и как файлы расположены на GIT. Где узнать все это?

К сожалению, нет ни одного места, из которого вы можете собрать всю мудрость. Вам нужно будет много использовать Google, ознакомиться с документацией и руководствами и учебными пособиями для таких систем построения, как make и системами управления версиями, такими как Git и т. Д.

Однако я нашел для вас соответствующий вопрос о переполнении стека, который должен помочь чтобы вы начали: How to split a C program into multiple files?

+0

вот один прекрасный ответ! Я останусь здесь (почему бы и нет), но вы, сэр, просто заработали мой взнос :) – 4rlekin

+0

@ 4rlekin спасибо! :) –

+0

Отличная помощь, спасибо большое за такое легкое объяснение @ TheParamagneticCroissant –

1

Здесь я поставлю свои два цента.

Об этом исходные файлы:
Как Вы, наверное, уже знаете, что заголовочные файлы (.h), который содержит объявления функций, вы должны #include такой файл, чтобы иметь возможность использовать функции внутри, НО если вы загляните внутрь один из таких файлов заголовков вы заметите, что есть ТОЛЬКО декларации без определений.
В .c файлах решает эту тайну:
Если у вас есть файл function.c с некоторыми функциями внутри и хотите использовать эти функции, скажем, main.c файла вам необходимо создать файл заголовок для этого: function.h, который будет содержать декларацию (прототип) в том, что функции от function.c файла. Вы также должны указать #include этот заголовок в файле function.c, если я правильно напомню. Тогда вы можете #include такой заголовок в свой файл main.c и использовать его.

О организации кода:
Существует несколько лучших практик и методов организации управления кодом и проектами. Также иногда IDE, используемая разработчиком, имеет определенный способ организации проектов.
Просто для уточнения: сам git не навязывает какой-либо конкретной организации

+0

очень легкое объяснение .... большое спасибо за то, что вы поняли вещи –

Смежные вопросы