Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Аvrstudio/c#/песочница

Непрочитано 21.12.2012, 14:53  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 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.RUN
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,011
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

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

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

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

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

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

http://open-electronics.ru/forum/vie...ff885b174d40ed
omercury вне форума  
Непрочитано 21.12.2012, 15:46  
TEHb
Почётный гражданин KAZUS.RUN
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,387
Сказал спасибо: 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.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: avrstudio/c#/песочница

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

http://www.rsdn.ru/forum/cpp/2706624.1
не совсем про C# но в целом оно )
whoim вне форума  
Непрочитано 21.12.2012, 16:27  
msng
Почётный гражданин KAZUS.RUN
 
Регистрация: 14.03.2005
Адрес: Москва
Сообщений: 1,063
Сказал спасибо: 729
Сказали Спасибо 1,658 раз(а) в 439 сообщении(ях)
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, время: 18:49.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.