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

 
 
> Структуры и CVAVR
Pavel_Bor
сообщение Jul 1 2011, 09:35
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 15-04-10
Из: Украина
Пользователь №: 56 660



К примеру существует main.c, lcd.h(описане прототипов) и lcd.c. Возможно ли сделать структуру которую бы видели все файлы и могли ее менять (без указателей).?

typedef struct ww
{
int a;
int b;
} ww_t;

Сообщение отредактировал Pavel_Bor - Jul 1 2011, 09:36
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Vitaly
сообщение Jul 1 2011, 11:03
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 17-06-05
Пользователь №: 6 095



Не надо путать описание структуры и определение переменных.
Описываем в "lcd.h" тип

Код
#ifndef _LCD_H_
#define _LCD_H_
typedef struct
{
int a;
int b;
} type_lcd;
#endif

в "main.c" определяем переменную и пользуемся
#include "lcd.h"
type_lcd var_lcd

в "lcd.c" используем ту же самую переменную
#include "lcd.h"
extern type_lcd var_lcd
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 1 2011, 11:08
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Vitaly @ Jul 1 2011, 14:03) *
в "lcd.c" используем ту же самую переменную
#include "lcd.h"
extern type_lcd var_lcd[/code]

достаточно написать
extern type_lcd var_lcd
в хидер файле который подключается ко всем C файлам (напр lcd.h или global.h), и эту переменную будет видно во всех C файлах.


Цитата
в "main.c" определяем переменную и пользуемся
#include "lcd.h"
type_lcd var_lcd

Хлам набрасывать в main не есть гут. Эта переменная относится к LCD, самое место объявить ее не в main.c, а в lcd.c

итого правильный вариант будет таким:

1. в lcd.h описываем тип.
2. в lcd.c объявляем переменную этого типа.
3. во все C файлы которые будут использовать lcd - подключаем include "lcd.h"
4. в конце lcd.h делаем объявление переменной с ключем extern (копи-паст объявления из C файла, и слово extern вперед).

Go to the top of the page
 
+Quote Post



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

 


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


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