реклама на сайте
подробности

 
 
> Вопрос про заголовочные файлы, и хороший стиль программирования
Student Pupkin
сообщение Apr 13 2009, 19:15
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



 Есть пара вопросов...
Как начинающий ембедер взял для учебных целей пару проектов своих старших по цеху коллег. Один проект на си, другой на асме. unsure.gif
  1. В проекте на си увидел следующее - имеется несколько СИ-файлов (допустим module_1.c, module_2.c, main.c) и несколько h-файлов.Отдельно для каждого модуля (кроме main.c) имеется h-файл с объявлениями функций (module_1.h, module_2.h), включаемый в соответствующем модуле. Также есть h-файлы, где объявлены глобальные переменные (допустим global_var.h). Эти переменные используются функциями некоторых модулей, но в тексте самих модулей соответствующей директивы о подключении этих h-файлов нет.
    И все это хозяйство выглядит таким образом:
    Код
    // файл module_1.c
              #include "module_1.h"
            // далее определения функций, которые используют переменные,описанные в global_var.h

    Код
    // файл module_2.c
          #include "module_2.h"
          // далее определения функций, которые используют переменные, описанные в global_var.h

    Код
    // файл main.c
          #include "global_var.h"
        #include "module_1.c"
        #include "module_2.c"
        // далее main....

    Но я думал, что по общепринятым правилам следовало в одном из модулей обявить все эти глобальные переменные обычным образом, а в остальных - с квалификатором extern...
    Правда не знаю, как правильней следует делать - создать два заголовочных файла, global_var.h и global_var_extern.h? А потом в main.c подключить первый, а в остальных модулях - второй файл? Или как? Или же способ моего старшего коллеги тоже к дурному стилю не относится?  laughing.gif
  2. В проекте на асме увидел только один здоровенный ассемблерный файл и несколько h-файлов. Самым интересным оказалось то, что в ассемблерном файле код не весь, оставшуюся часть (кучку подпрограмм) я нашел спрятанной в одном из h-файлов... blink.gif
    Полагаю это можно отнести к "плохому тону" в оформлении программы?

Вот... Просто хочется научиться правильно оформлять программы, привить себе хороший стиль в написании и оформлении кода smile3046.gif ... Чтобы если придется в команде работать - в грязь лицом не ударить, не показаться невеждой... 01.gif    
Гуру! Наставьте на путь истиный!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Apr 13 2009, 19:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Student Pupkin @ Apr 13 2009, 23:15) *
Правда не знаю, как правильней следует делать - создать два заголовочных файла, global_var.h и global_var_extern.h? А потом в main.c подключить первый, а в остальных модулях - второй файл? Или как?

А зачем два? Объявить глобальные переменные в одном модуле, и сделать хидер с extern'ами. Переменные в заголовочный файл помещать не следует.

Цитата(Student Pupkin @ Apr 13 2009, 23:15) *
Самым интересным оказалось то, что в ассемблерном файле код не весь, оставшуюся часть (кучку подпрограмм) я нашел спрятанной в одном из h-файлов... blink.gif
Полагаю это можно отнести к "плохому тону" в оформлении программы?

Код в хидере, так же как приляпывание "C"-файлов при помощи #inculde, ИМХО, кошмар.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 13 2009, 20:59
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(aaarrr @ Apr 13 2009, 23:22) *
Переменные в заголовочный файл помещать не следует.
А если она объявлена как register(независимо от того зарезервирован ли будет под нее регистр проца), тогда можно ?
Автор топика не читайте это smile.gif , это не совет laughing.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 21:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016