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

 
 
> Как сделать структуру видимой в других файлах?
MSprut
сообщение Aug 15 2007, 11:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



Есть структура, объявленная в одном .с-файле, вместе с ним компилится второй в котором нужно изменить одну из переменных, входящих в структуру. Где и как в ИАРе правильно объявить эту структуру, чтобы к ней был доступ из разных 2-х файлов?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vesago
сообщение Aug 18 2007, 10:54
Сообщение #2


Тутэйшы
****

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



А я сторонник следующей школы:

Код
//terminals.c
#include <ioavr.h>
#include <inavr.h>
#include <string.h>
#include "typedefines.h"
#include "settings.h"
#include "pins.h"
#include "service.h"

#include "terminals_defines.h"


//--------------------------------------------------------------------------------------------------------


//************************************
// Variables
//************************************
struct terminal_data
{
  u8_t type;
  u8_t cmd;
  u8_t view_mode;
  u8_t view_time;
  u8_t buf[TERMINAL_BUF_SIZE];
  u8_t flags;
}terminal[TERMINAL_NUM];


//************************************
// Prototypes
//************************************
u8_t Terminal_Check_Free(u8_t id);



//::::::::::::::::::::::::::::::::::::::::::::::::::::::
// Проверка - свободен ли терминал id
//  1 - свободен
//  0 - занят
//::::::::::::::::::::::::::::::::::::::::::::::::::::::
u8_t Terminal_Check_Free(u8_t id)
{
  return(terminal[id].cmd == TERMINAL_CMD_NOT);
}


Код
//terminals.h
#if !defined( TERMINALS_H )
#define       TERMINALS_H
//-----------------------------------------------------------------------------

//************************************
// Variables
//************************************
extern struct terminal_data
{
  u8_t type;
  u8_t cmd;
  u8_t view_mode;
  u8_t view_time;
  u8_t buf[TERMINAL_BUF_SIZE];
  u8_t flags;
}terminal[TERMINAL_NUM];

//************************************
// Prototypes
//************************************
extern u8_t Terminal_Check_Free(u8_t id);
//-----------------------------------------------------------------------------
#endif


Один недостаток - в каждом модуле, где понадобятся ресурсы terminal.c модуля придется подключать хедер и дефайновый хедер.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 18 2007, 11:08
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(vesago @ Aug 18 2007, 13:54) *
А я сторонник следующей школы:

Причем здесь "школа"? Любой вариант в котором структура описана более чем в одном месте есть глупость.
Зачем в terminals.c дубль terminals.h вместо его включения!? extern в "школе", похоже недоучили sad.gif и испугались?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:10
Рейтинг@Mail.ru


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