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

 
 
 
Reply to this topicStart new topic
> extern var
sergey sva
сообщение Feb 27 2009, 12:12
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Как можно добраться до содержимого переменной, которая компилируется и объявлена в другом файле.
Есть четыре файла adc.c adc.h main.c main.h
В adc.h записано так: extern int buf[10]; в adc.c int buf[10];
Компилируется сначала файл adc.c потом main.c
При выполнение кода adc.c данные запишутся в переменную buf, как можно получить эти данные в файле main.c?
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Feb 27 2009, 12:19
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(sergey sva @ Feb 27 2009, 15:12) *
При выполнение кода adc.c данные запишутся в переменную buf, как можно получить эти данные в файле main.c?

#include adc.h

smile3046.gif
блин, кавычки забыл...
#include "adc.h"


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 27 2009, 12:20
Сообщение #3


Гуру
******

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



Дык все уже сделано.
Код
#include "adc.h"

int main(void)
{
    ...
    x = buf[y];
    ...
}
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 27 2009, 12:25
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



благодарю smile.gif
добавил #include adc.h в main.c заработало.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 27 2009, 13:54
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Это и называется подключение (логическое связывание) модулейsmile.gif
Код
#include "file.h" // подключаем файл из путей проекта
#include <file.h> //подключаем файл из путей библиотеки компилятора.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 27 2009, 14:34
Сообщение #6


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(demiurg_spb @ Feb 27 2009, 21:54) *
Это и называется подключение (логическое связывание) модулейsmile.gif
Код
#include "file.h" // подключаем файл из путей проекта
#include <file.h> //подключаем файл из путей библиотеки компилятора.

Позволю себе маааленькую добавочку сделать:
Код
#include <file.h>

Так мы можем не только библиотеки, поставляемые с компилятором, подключать, но и любые другие. Например свои. Для этого компилятору нужно лишь указать путь к ним. При этом мы избавляемся от таких неуклюжих записей
Код
#include "x:\myproject\libs\whats\file.h"


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Mar 2 2009, 18:42
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Вопрос на эту же тему. В проекте используется четыре файла adc.c adc.h main.c main.h ,
в adc.h объявлена переменная buf как extern unsigned char buf; в adc.c #include<adc.h> unsigned char buf;
в main #include<adc.h> компилятор переменную buf видит в main.c все работает, дальше по такому же принципу
добавил еще два фаила das.c das.h и добавил строчку в маке файл. В них тоже также объявляю переменную dataR
прикрепляю к main фаил das.h , компилятор эту переменную тоже видит в файле main. при компиляции ошибок нет,
только данные не передаются, то есть в этой переменной постоянно какие то цифры, не то что должно быть.
В файле das.c одна функция, которая по прерыванию от таймера записывает данные в переменную dataR.
Сделал принудительную запись в dataR = 10; по прерыванию, но когда считываю данные в файле маин там какието 255 или
210 ,все время меняется эта цифра. Вопрос понимаю, не конкретный, кто может знать что происходит в моих исходниках,
Просто может у кого была похожая проблема, или или порекомендуете что? yagarto GCC-4.3.2
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 2 2009, 18:56
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(sergey sva @ Mar 2 2009, 20:42) *
по прерыванию от таймера записывает данные в переменную dataR.
<Переменная объявлена как volatile> ? <показать код> : <искать по форуму volatile>


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 15:24
Рейтинг@Mail.ru


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