Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
C: где объявлять переменные
Отправлено
asd
28 ноября 2008 г. 11:01
где объявлять глобальные переменные - в .С или в .H файле ?
Составить ответ
|
Вернуться на конференцию
Ответы
ИМХО в С правильнЕе. Хидер может быть включен в несколько разных С-шных файлов, если объявить в нём переменную, получите сразу несколько экземпляров в разных исходниках, путаницу и ругань линкера.
-
Сидоргек
(28.11.2008 12:04:36
89.209.87.196
,
пустое
)
Ответ:
-
asd
(28.11.2008 12:25:46
194.187.230.100
, 169 байт)
Тогда объявляйте в хидере. Никто не заставляет.
-
Сидоргек
(28.11.2008 13:10:7
89.209.87.196
,
пустое
)
тогда что такое объявление в .h - просто уведомление что переменная где-то ...{+}(+)
-
qwe
(28.11.2008 13:24:58
194.187.230.100
, 346 байт)
Кстати, для переменных прототипы не делаются. Вы с прототипами функций их видимо путаете.
-
rezident
(28.11.2008 13:43:7
88.81.213.38
,
пустое
)
Ответ:
-
qwe
(28.11.2008 14:07:28
194.187.230.100
, 190 байт)
дык я же прдложил в структуру их объединить. Или даже в структуру из нескольких структур.
-
rezident
(28.11.2008 14:11:49
88.81.213.38
,
пустое
)
#include это всего лишь команда вставки текста для препроцессора. Считайте, что весь текст хедера у вас находится в сишнике. Исходя из этого, и делайте выводы.
-
rezident
(28.11.2008 13:42:19
88.81.213.38
,
пустое
)
Есть объявление переменной и есть уведомление, о том, что она где-то объявлена. И то и другое можно располагать и в С и в H. Только надо понимать, что из этого получится.
-
Сидоргек
(28.11.2008 13:31:1
89.209.87.196
,
пустое
)
Создайте структуру (тип) из глобальных переменных и тогда будет всего одна строчка объявления.
-
rezident
(28.11.2008 13:09:35
88.81.213.38
,
пустое
)
так и делаю для сохраняемых в еепром переменных
-
qwe
(28.11.2008 13:32:52
194.187.230.100
, 155 байт)
когда ты поймёшь что в Си *.h это просто кусок текста который вставляется i...{+}(+)
-
ффффф
(28.11.2008 13:42:26
67.228.159.135
, 290 байт)
А еще .h не в .c, а прямо в проекты вставляют.
-
Quasy
(28.11.2008 13:59:17
192.168.0.207,80.243.9.34
,
пустое
)
Ответ:
-
ффффф
(28.11.2008 14:10:10
67.228.159.135
, 803 байт)
извращение полное
-
DASM
(28.11.2008 13:14:37
203.194.234.7
,
пустое
)
Это очень удобно для програмирования в стиле С++
-
Тумблер
(28.11.2008 13:28:28
194.190.167.141,194.190.161.58
,
пустое
)
объединение разнородных не связанных переменных в структуры - никакого отношения к плюсам не имеет
-
DASM
(28.11.2008 13:33:43
203.194.234.7
,
пустое
)
Да ты што ! :)))
-
Тумблер
(28.11.2008 13:49:58
194.190.167.141,194.190.161.58
, 214 байт)
ну и нехрен их в структуру одну пихать и называть это плюсами. CTrash разве что только обозвать =)
-
DASM
(28.11.2008 13:55:14
203.194.234.7
,
пустое
)
Вот, кстати
-
Тумблер
(28.11.2008 16:57:1
194.190.167.185,194.190.161.58
, 904 байт,
ссылка
)
Что же - называй на сколько фантазии хватит. Главное чтобы нравилось.
-
Тумблер
(28.11.2008 15:20:22
194.190.167.141,194.190.161.58
,
пустое
)
Однако рекомендованное ранними ИАРами как эффективное кодирование
-
Quasy
(28.11.2008 13:16:34
192.168.0.207,80.243.9.34
,
пустое
)
Ответ:
-
Тумблер
(28.11.2008 12:24:13
194.190.167.185,194.190.161.58
, 1056 байт)
SomeVar=0. Всегда обнуляете глобальные CамоBары? Паранойя?
-
Quasy
(28.11.2008 12:53:9
192.168.0.207,80.243.9.34
,
пустое
)
Нет. Только для не понимающих, что глобальные переменные обьявляются в файле .h
-
Тумблер
(28.11.2008 13:26:11
194.190.167.141,194.190.161.58
,
пустое
)
Я в С-шнике делаю, причем именно там где они инициализируются/используются. А в хедерах только extern-ю их же. Потому что хедеры обычно еще и типы содержат и могут включаться в другие модули.
-
rezident
(28.11.2008 11:28:46
88.81.213.38
,
пустое
)
Хм...Да где хочешь! Например,Никаких ограничений, кроме тех повторов в объявлениях static , где компилятор САМ сообщит об этом, если не проконтролируешь.
-
Макаров
(28.11.2008 11:25:37
89.113.48.202
,
пустое
)
делаю так
-
ффффф
(28.11.2008 11:14:40
67.228.159.135
, 1965 байт)
Ответ:
-
Vit
(28.11.2008 11:05:33
10.0.0.77,83.170.240.226
, 82 байт)
не надо так делать - зачем так расширять область видимости ? extern писать только в тех файлах, где необходим доступ к этой переменной, причем С файлах, а не h
-
DASM
(28.11.2008 11:13:41
203.194.234.7
,
пустое
)
Не нужно использовать хидеры как мусорку и включать куда-попало. А не писать (даже для себя забывчивого), откуда берёшь переменную - путь в клоаку
-
Vit
(28.11.2008 14:23:40
10.0.0.77,83.170.240.226
,
пустое
)
вот и включают хедеры в тех файлах, где переменные нужны. только туда и расширяется область видимости.
-
Andy-spb
(28.11.2008 11:41:56
93.185.179.202
,
пустое
)
следить замучаешься куда включил куда нет, особенно если проект большой.
-
ффффф
(28.11.2008 11:46:34
67.228.159.135
,
пустое
)
не я, пускай компилятор следит :-)
-
Andy-spb
(28.11.2008 11:59:25
93.185.179.202
,
пустое
)
+1 Он и следит, вплоть до того, что ты в С'шнике вызвал переменную (забыл объявить или опечатался на скорой набивке ), компилятор и это отслеживает.
-
Макаров
(28.11.2008 12:10:35
89.113.48.202
,
пустое
)
В Makefile.
-
Artem-1.6E-19
(28.11.2008 11:04:44
212.115.235.8
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
скольким Омам равен эквивалент двух резисторов по 10 Ом, соединённых параллельно?:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru