Перейти к содержанию
    

Проект из многих файлов на C

Не слишком ли я запутываю свои проекты? Например, гложет мысль, как правильнее - использовать display.h в main.h или в display.c?

 

Собирательство всех заголовков в один, не самая хорошая идея. В сообществе разработчиков ОС FreeBSD, есть такой уважаемый человек, как Bruce Evans. Он весьма ревниво следит за стилевой организацией системных .h файлов, да и другого кода. Некоторые из его требований могут показаться надуманными, но если почитать разъяснения, то все становится на свои места. Рекомендую прочесть документ http://www.freebsd.org/cgi/man.cgi?query=style&sektion=9 - в нем много полезных советов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...чтобы не включать всю кучу h-файлов во все c-файлы, собрал их в одну кучу в main.h....

 

у компиляторов порой встречается глюк - не чуствительность к изменениям ашника в ашнике.

ну это так...к слову..

 

а если по теме:

в общий ашник скидывают то, что точно не будет правиться. Ну например файлы объявлений стандартной библиотеки.

Или скажем внешней библиотеки третьих лиц.

Например если взять любой пример от ST то заголовочные файлы включаются в один общий.

Только не забывайте что код в ввиде библиотеки педоставлен:)

 

по поводу консерватории - где и как объявлять глобальные переменные. Так это же вопрос консерватории а не инструмента. Пишите Вы хоть

на си или си плас плас или джаве - фиолетов, это вторично(язык описания). первично логика - кто и как должен видеть, иметь доступ,

править, читать, атомарность доступа, шаринг, время жизни и т.д... аспектов много...

Например:

взять те же самые библиотеки. Удобно писать экспорт-импорт внутри одного ашника. И в зависимости от условия компиляции

объявлять везде что это внешняя переменная либо своя(если внутри либы). При этом объявление носит уникальность записи и исключает двойную

или более трактовку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А с-файл как называете - main.cpp или по имени проекта? Тоже колеблюсь туда-сюда. Main найти проще, но смысла меньше.

Помню, за имя Top_m в SV модератор по ПЛИСам намекнул, что отгрыз бы своему "падавану" руки. :w00t:

Не, main.cpp присутствует, тут никаких дилемм нет - в нём живёт как правило только функция main(), которая запускает прикладной код. Маленький файл. А заголовок - он содержит проектно-зависимое содержание, поэтому по имени проекта и зовётся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотел бы добавить к своему сообщению здесь, ничего необычного, но может кому-нибудь будет интересно. Деление проекта на модули разное, но всегда чисто смысловое, по обслуживанию аппаратных модулей, по применяемым алгоритмам обработки, по элементам пользовательского интерфейса и т.п. Размеры модулей разные и думаю что это большого значения не имеет, от 200 строк кода или меньше до 1000-1500 строк, включая необходимые комментарии. В среднем 300-400 строк в модуле. При этом легко можно использовать какой-либо модуль без существенной переделки в других проектах, некоторая унификация)). При желании можно оформить в виде библиотеки. Архив своих проектов также полезен, чтобы не изобретать велосипед заново, было такое что решение для аналогичной задачи нашел на пятидюймовой дискете в своих проектах более чем 10-летней давности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SlickEdit не пользовался, в Notepad++ найдется все, что нужно, я думаю. И плагины у него тоже есть.

Вопрос не в редакторе, а в голове.

Попробуйте Geany. Лучше нотепадов однозначно.

Вкратце.

Проект в geany - это просто набор открытых файлов. Для маленького проекта никаких дополнительных телодвижений не нужно - TAGS и автодополнения работают автоматом.

Если кол-во файлов такое, что заметны тормоза - делается tags-файл на используемые либы и продолжаете в том же духе.

Но эклипс все равно круче.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте Geany. Лучше нотепадов однозначно.

...

Но эклипс все равно круче.

Это всё инструменты.

В Notepad++ я открываю в двух областях разные файлы и копирую, то, что надо, из одного файла в другой. Вот и вся reusability.

Или один и тот же файл редактирую в разных местах. Очень удобно.

halfdoom дал ссылку, там больше про стиль оформления. Многое из того я использую, кое с чем не согласен.

 

Повторюсь, впадаю в панику, когда вижу 20 файлов, посвященных USB. Это нужно взять лист ватмана, и попытаться на нем нарисовать все связи между элементами. В меньшей степени это относится и ко всем другим библиотечным функциям.

P.S. А как сделать проще для USB - не знаю!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

halfdoom дал ссылку, там больше про стиль оформления. Многое из того я использую, кое с чем не согласен.

 

Полезно, так-же, заглянуть в код этой ОС:

 

#include <sys/stdint.h>                                                                                                                  
#include <sys/stddef.h>                                                                                                                  
#include <sys/param.h>                                                                                                                   
#include <sys/queue.h>                                                                                                                   
#include <sys/types.h>                                                                                                                   
#include <sys/systm.h>                                                                                                                   
#include <sys/kernel.h>                                                                                                                  
#include <sys/bus.h>                                                                                                                     
#include <sys/module.h>                                                                                                                  
#include <sys/lock.h>                                                                                                                    
#include <sys/mutex.h>                                                                                                                   
#include <sys/condvar.h>                                                                                                                 
#include <sys/sysctl.h>                                                                                                                  
#include <sys/sx.h>                                                                                                                      
#include <sys/unistd.h>                                                                                                                  
#include <sys/callout.h>                                                                                                                 
#include <sys/malloc.h>                                                                                                                  
#include <sys/priv.h>                                                                                                                    

#include <dev/usb/usb.h>                                                                                                                 
#include <dev/usb/usbdi.h>                                                                                                               
#include <dev/usb/usbdi_util.h>                                                                                                          
#include "usbdevs.h"                                                                                                                     

#include <dev/usb/usb_debug.h>                                                                                                           
#include <dev/usb/usb_process.h>                                                                                                         

#include <dev/usb/serial/usb_serial.h>
#include <dev/usb/serial/uftdi_reg.h> 

 

Повторюсь, впадаю в панику, когда вижу 20 файлов, посвященных USB.

 

Для сложного девайса ничего страшного. Если эти файлы разбиты по функционалу, то ориентироваться в них несложно. Иногда бывает другая крайность - когда задачу дробят на слишком мелкие кусочки, в ущерб общей логике. Тогда конечно, крайне сложно запомнить где что лежит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это всё инструменты.

В Notepad++ я открываю в двух областях разные файлы и копирую, то, что надо, из одного файла в другой. Вот и вся reusability.

Или один и тот же файл редактирую в разных местах. Очень удобно.

Только что "открыл", что Notepad++ может выдать список функций в файле! И даже отсортировать их по алфавиту, если хочется. Красота.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...