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

 
 
> Как сослаться на структуру typedef struct?, Из другого файла
Димон Безпарольн...
сообщение Jun 20 2017, 09:27
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



В одном хидере объявлена структура:

Код
typedef struct ADC_my2 {            //Структура для хранения сырых значений
    uint16_t    ADC_CH0;            //
    uint16_t    ADC_CH1;            //
    uint16_t    ADC_CH2;            //
    uint16_t    ADC_CH3;            //
    uint16_t    ADC_CH4;            //    
    uint16_t    ADC_CH5;            //
    uint16_t    ADC_CH6;            //
    uint16_t    ADC_CH7;            //    
}ADC_my;                            //
ADC_my ADC_RAW;                        //


Для того, чтобы были доступны ее элементы из другого файла нажно в его хидере объявить эту структуру как extern. Если я правильно понимаю. Как это сделать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Lagman
сообщение Jun 20 2017, 11:16
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



В .h (для примера main.h) файле обычно находится объявление типа для структуры
Цитата
typedef struct { //Структура для хранения сырых значений
uint16_t ADC_CH0; //
uint16_t ADC_CH1; //
uint16_t ADC_CH2; //
uint16_t ADC_CH3; //
uint16_t ADC_CH4; //
uint16_t ADC_CH5; //
uint16_t ADC_CH6; //
uint16_t ADC_CH7; //
} ADC_my; //

обрамляя при этом файл main.h
Код
#ifndef MAIN_H
#define MAIN_H
... содержимое заголовочного файла ...
#endif


В си файле где определяется структура
Цитата
#define main.h
......
ADC_my ADC_RAW; //
.....


В других сишных файлах где используется глобальная структура определенная в другом файле
Цитата
#define main.h
......
extern ADC_my ADC_RAW;
.....

Я создаю проекты не включая все си файлы в один си файл, видел как делают некоторые в один main.c включают много #define second.c и другие сишные файлы.
Go to the top of the page
 
+Quote Post
novikovfb
сообщение Jun 20 2017, 11:27
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 518
Регистрация: 29-09-11
Пользователь №: 67 450



Цитата(Lagman @ Jun 20 2017, 15:16) *
В других сишных файлах где используется глобальная структура объявленная в другом файле

extern ADC_my ADC_RAW; лучше перенести в хедер, как и все объявления глобальных переменных. Компилироваться и даже работать будет и так и эдак, но риск влепить малозаметную ошибку в хедере меньше.
Go to the top of the page
 
+Quote Post
Lagman
сообщение Jun 20 2017, 11:30
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Цитата(novikovfb @ Jun 20 2017, 14:27) *
extern ADC_my ADC_RAW; лучше перенести в хедер, как и все объявления глобальных переменных. Компилироваться и даже работать будет и так и эдак, но риск влепить малозаметную ошибку в хедере меньше.

Можно, только я не знаю что будет если вначале идет extern ADC_my ADC_RAW; а потом появляется ADC_my ADC_RAW;
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Димон Безпарольный   Как сослаться на структуру typedef struct?   Jun 20 2017, 09:27
- - Genadi Zawidowski   В хидеое должно быть так: extern ADC_my ADC_RAW; ...   Jun 20 2017, 09:29
|- - scifi   Цитата(Genadi Zawidowski @ Jun 20 2017, 12...   Jun 20 2017, 09:33
- - Димон Безпарольный   Не получается однако. Я так уже пробовал. Потому и...   Jun 20 2017, 09:37
|- - novikovfb   Цитата(Димон Безпарольный @ Jun 20 2017, 13...   Jun 20 2017, 09:40
||- - Димон Безпарольный   Цитата(novikovfb @ Jun 20 2017, 12:40) чт...   Jun 20 2017, 09:52
||- - novikovfb   Цитата(Димон Безпарольный @ Jun 20 2017, 13...   Jun 20 2017, 09:59
||- - Димон Безпарольный   Цитата(novikovfb @ Jun 20 2017, 12:59) Ни...   Jun 20 2017, 10:01
||- - Сергей Борщ   QUOTE (Димон Безпарольный @ Jun 20 2017, 13...   Jun 20 2017, 10:06
||- - Димон Безпарольный   Цитата(Сергей Борщ @ Jun 20 2017, 13:06) ...   Jun 20 2017, 10:08
||- - novikovfb   Цитата(Димон Безпарольный @ Jun 20 2017, 14...   Jun 20 2017, 10:15
||- - Димон Безпарольный   Цитата(novikovfb @ Jun 20 2017, 13:15) Об...   Jun 20 2017, 10:27
|- - Mareng   Цитата(Димон Безпарольный @ Jun 20 2017, 16...   Jun 20 2017, 09:41
|- - novikovfb   Цитата(Mareng @ Jun 20 2017, 13:41) Возмо...   Jun 20 2017, 09:43
- - Непомнящий Евгений   Код// a.h typedef struct A {int f; } AA; extern AA...   Jun 20 2017, 10:34
|- - novikovfb   Цитата(Lagman @ Jun 20 2017, 15:30) Можно...   Jun 20 2017, 12:00
- - Димон Безпарольный   Да, спасибо. Так все заработало. В хидере: Кодty...   Jun 20 2017, 11:32
- - Lagman   Цитата(Димон Безпарольный @ Jun 20 2017, 14...   Jun 20 2017, 11:36


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 14:37
Рейтинг@Mail.ru


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