|
|
  |
Вопрос по датчику, DS18B20 |
|
|
|
Jul 21 2007, 06:30
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Cпасибо,CV тоже проверяет при линковке и выдает -ошибка линкера несоответсвие типов. Тогда здесь речь об чем? Цитата(GrayCat @ Jul 19 2007, 14:52)  Маленькое дополнение: очень желательно, чтобы строчка Код #include "DS18B20.h" присутствовала также и в самом "DS18B20.с", для того чтобы компилятор имел возможность во время компиляции проверить соответствие типов объявленной и реализованной переменных. Иначе, если вы, например, внутри "DS18B20.с" поменяете тип этой переменной с unsigned на signed, но не отразите это в "DS18B20.h", то основная программа (в "main.c") будет по прежнему считать ее unsigned, что чревато крайне трудноуловимыми глюками.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Jul 25 2007, 15:37
|

Частый гость
 
Группа: Участник
Сообщений: 80
Регистрация: 12-01-07
Из: Энергодар Украина
Пользователь №: 24 374

|
Цитата(M@T_F@Q @ Jul 21 2007, 00:03)  ООооо это было бы вобще классно. Мой емайл roman_1986@xnet.uz. Заранее спасибо!!! посмотри почту
|
|
|
|
|
Jul 30 2007, 07:05
|

Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342

|
Цитата(WHALE @ Jul 21 2007, 09:30)  Тогда здесь речь об чем? Линкер способен словить несоответствия размеров переменных. А каким образом они объявлены -- signed, unsigned или вообще структура -- о том ведомо только компилятору.
--------------------
Gray©at
|
|
|
|
|
Aug 1 2007, 06:49
|

Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342

|
Цитата(WHALE @ Jul 30 2007, 10:50)  а вот и нет-signed и unsigned отлавливаются также и именно линкером,по крайней мере в CV. Ну, значит счастливых пользователей CV можно поздравить с тем, что в объектник пишется полная информация о типах  Но не стоит расслабляться: так дела обстоят не у всех. Не вечно же вы будете пользоваться только CV!  Так что не стоит забывать хорошую манеру прописывать объявление переменных в .h-файле и включать его в .c-файл с определением этой же переменной.
--------------------
Gray©at
|
|
|
|
|
Aug 1 2007, 17:01
|

Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342

|
Цитата(GDI @ Aug 1 2007, 11:16)  iar ругается на такое, типа двойное объявление или что то типа того... А вот не надо делать двойное объявление  . А надо различать объявление и выделение памяти. Файл functions.h: Код // ... extern unsigned char Variable; // ... Файл functions.c: Код #include "functions.h" // ... unsigned char Variable; // ... Файл main.c: Код #include "functions.h" // ... Variable = 1; // ... Так вот в functions.h содержится именно объявление. Просмотрев строку extern unsigned char Variable; компилятор просто "держит в уме", что где-то эта переменная будет, и знает, каким образом с ней обращаться. Включение "functions.h" в main.c не генерирует никакого кода и не выделяет никакой памяти. На это указывает ключевое слово extern.А вот в functions.c происходит реальное выделение памяти под unsigned char Variable; . Поскольку в данном случае тип переменной согласуется с тем, что было объявлено в "functions.h", то все в порядке.
--------------------
Gray©at
|
|
|
|
|
Aug 2 2007, 06:29
|
Частый гость
 
Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324

|
Цитата(GrayCat @ Aug 1 2007, 10:49)  Так что не стоит забывать хорошую манеру прописывать объявление переменных в .h-файле и включать его в .c-файл с определением этой же переменной. доброе время суток. Если я Вас правильно понял, то так можно обьявлять только extern переменые, а не глобальные для одного *.с файла.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|