Jump to content

    
Sign in to follow this  
Lagman

Проект состоящий из нескольких файлов

Recommended Posts

Посмотрел код, из проекта Open Pilot от Geohot, https://github.com/commaai/openpilot/tree/master/board и как то не понял, код оформлен (ну пускай авто отформатирован), но зачем он так сделал, в заголовочных .h файлах лежат куски кода и потом все эти файлы включаются в main.c

Да, это будет работать и даже откомпилируется (наверно с множеством предупреждений т.к. прототипов функций нет, хотя может он их по порядку выставил :)), но это все равно что весь код разместить в одном файле и дальнейшая модификация будет затруднена. (Это все по моему мнению.)

 

 

Share this post


Link to post
Share on other sites

Дикий изврат.

Мне только один раз понадобилось код размещать в инклюдируемых файлах — для реализации операций поиска связных компонет. Код почти одинаковый, различающийся совсем немногим для 4- и 8-связных областей, поэтому решил, что легче будет с разными дефайнами заинклюдить один и тот же файл дважды!

// на гитхабе у меня лежит. Кажись, в с-сниппетах. Не помню уж точно.

Share this post


Link to post
Share on other sites

ИМХО, куски кода в хедерах нужны только в случае, если код нужно инлайнить, т.е. описать как static inline и проблем быть не должно.

Share this post


Link to post
Share on other sites
но зачем он так сделал, в заголовочных .h файлах лежат куски кода и потом все эти файлы включаются в main.c

 

Плохо знает используемый компилятор. Как только пойдут множественные включения в несколько компилируемых единиц, то появятся ошибки линковки.

Share this post


Link to post
Share on other sites

Может попытка добиться массового инлайна до того как в гцц толково заработла опция lto (а она кстати совсем недавно заработала без граблей).

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this