Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 21.12.2012, 14:53  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Аvrstudio/c#/песочница

В общем, чуть более крупный проект на C# и желание "сделать красиво" вогнали в тупик. Попробую объяснить.

Хочу раскидать задачи (как бы - работу с разными модулями) - по разным .c файлам. Возникает проблема работы с общими переменными.

Я так понимаю, что avrstudio автоматом инклайдит .c файлы из проекта. Поэтому #include "module.c" не имеет смысла.

Чтобы обращаться из main.c и module.c к одной и той же переменной (например - вачдог wd) я должен создать заголовочный файл module.h (по смыслу), прописать в нем volatile uint16_t wd, а этот файл #include module.h как в module.c так и в main.c (иначе компилятор НЕ видит переменную и ругается).

Однако и так не все хорошо в нашем королевстве. Я вообще не понимаю что происходит. Перешиваю прибор - вроде как работает. Передергиваю питание - и явно не могу получить доступ (судя по отладочным сообщениям) к одной и той же переменной. Как будто заведены две разные переменные и каждый .c файл работает со своей.

Загадка - почему я должен в main.c инклайдить module.h чтобы увидеть переменную. Ведь студия должна автоматом прицепить module.c а в нем уже прописано include module.h, и это дело значит должно автоматом увидется из main.c?

В итоге, чтобы ликвидировать бардак который успел развести, мне нужно узнать - как правильно использовать общие переменные в разных .c файлах. Поможете?
Реклама:

Последний раз редактировалось whoim; 21.12.2012 в 14:59.
whoim вне форума  
Непрочитано 21.12.2012, 15:03  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

whoim,
как там локальной/глобальной видимостью? мож в главный хидер переместить?
jump вне форума  
Непрочитано 21.12.2012, 15:15  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

Вы путаете компилятор и линкер.
Компилятор С видит только то, что объявлено в файле, плюс то, что описано в заголовках, подключаемых с помощью #include.
Линкер компонует объектные файлы, полученные от компилятора C в исполняемый образ. Видимость между объектными файлами полная.
TEHb вне форума  
Непрочитано 21.12.2012, 15:20  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

volatile / static юзаю, но пока не закончил ловить глюки и искать закономерность.. Со static volatile получается, что я что то меняю в одном файле, а в другом значения прежние.. То есть как будто две разные переменные для каждого файла
Хлавный хи
whoim вне форума  
Непрочитано 21.12.2012, 15:22  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

Сообщение от TEHb Посмотреть сообщение
Вы путаете компилятор и линкер
запросто

Сообщение от TEHb Посмотреть сообщение
Видимость между объектными файлами полная
и тем не менее, как мне правильно решить задачу? увидеть одну и ту же переменную в разных C файлах?
whoim вне форума  
Непрочитано 21.12.2012, 15:31  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

http://open-electronics.ru/forum/vie...ff885b174d40ed
omercury вне форума  
Непрочитано 21.12.2012, 15:46  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

Как-то так.

a.h
Код:
extern int a;
a.c
Код:
#include "a.h"
int a;
b.c
Код:
#include "a.h"
void main()
 { a = 1;
 }
Почитайте книжку по C, очень важно понимать язык. Экспериментально не до всего можно дойти.
TEHb вне форума  
Непрочитано 21.12.2012, 16:07  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

TEHb, спасибо. На текущий момент я убрал вообще все определения - static, volatile и явно стало лучше. пошел читать по ссылке выше и гуглить extern
whoim вне форума  
Непрочитано 21.12.2012, 16:13  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

http://www.rsdn.ru/forum/cpp/2706624.1
не совсем про C# но в целом оно )
whoim вне форума  
Непрочитано 21.12.2012, 16:27  
msng
Почётный гражданин KAZUS.RU
 
Регистрация: 14.03.2005
Адрес: Москва
Сообщений: 1,070
Сказал спасибо: 711
Сказали Спасибо 1,662 раз(а) в 442 сообщении(ях)
msng на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

Посмотри тут:
http://www.chipenable.ru/index.php/p...na-moduli.html
Я сейчас тоже похожей х… занимаюсь.
msng вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Песочница по С RY723 Электроника - это просто 0 27.02.2011 14:05


Часовой пояс GMT +4, время: 17:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot