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

 
 
> Си: 2 константы-структуры с полями-указателями друг на друга, как объяснить компилятору?
_Ivana
сообщение Feb 29 2012, 23:22
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Собственно, сабжевая задача. Обходные варианты есть, но хочется красиво sm.gif
Структура. Одно из полей - указатель на структуру этого же типа.
2 переменные. Одна содержит в этом поле указатель на вторую, вторая - на первую. Если не константы - то все работает, ибо мы присваиваем значение полям когда угодно.
Если константы - не работает, ибо надо при определении заполнить её значениями, а вторая переменная получается ещё не определена и не получается на неё указать sm.gif

ЗЫ сейчас пробую разнести на 2 файла и поиграться экстернами, но пока не получается sm.gif

Вроде удалось добиться понимания от компилятора в результате следующих искусственных манипуляций:

делается хедэр с определением типа
Код
typedef struct our
{
    unsigned char c;
    struct our *s_our;
} our_struct;


делается 2 файла, в которые инклюдится этот хедэр и пишется в одном
Код
extern our_struct s1;
const our_struct s2 = {'A', &s1};


и в другом
Код
extern our_struct s2;
const our_struct s1 = {'A', &s2};


Билд проекта собирается. ошибок не выдает. Теперь попозже проверю как это работает в реале sm.gif

Сообщение отредактировал _Ivana - Feb 29 2012, 23:23
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Ivana   Си: 2 константы-структуры с полями-указателями друг на друга   Feb 29 2012, 23:22
- - Marto   А если попробовать сделать члены структуры констан...   Mar 1 2012, 05:54
- - _Ivana   Спасибо за идею, вечером попробую. Только всвязи с...   Mar 1 2012, 06:46
|- - Marto   Цитата(_Ivana @ Mar 1 2012, 11:46) все по...   Mar 1 2012, 07:19
- - Сергей Борщ   QUOTE (_Ivana @ Mar 1 2012, 01:22) делает...   Mar 1 2012, 07:35
- - Marto   Сами пробовали компилить?   Mar 1 2012, 09:01
|- - Сергей Борщ   QUOTE (Marto @ Mar 1 2012, 11:01) Сами пр...   Mar 1 2012, 09:19
- - Marto   Вопросов нет. Нашел ошибку у себя. Спасибо.   Mar 1 2012, 09:55
- - _Ivana   Сергей Борщ блин, посыпАю голову пеплом! Стыдн...   Mar 1 2012, 12:02
- - _Ivana   Казалось бы, все понятно и тема закрыта Это так, ...   Mar 1 2012, 15:38
|- - toweroff   Цитата(_Ivana @ Mar 1 2012, 19:38) Если э...   Mar 1 2012, 16:13
|- - Сергей Борщ   QUOTE (_Ivana @ Mar 1 2012, 17:38) 0.5) в...   Mar 1 2012, 17:57
- - _Ivana   Пока согласно моим заблуждениям, в объявлении это ...   Mar 1 2012, 16:18
|- - toweroff   Цитата(_Ivana @ Mar 1 2012, 20:18) Пока с...   Mar 1 2012, 16:45
- - _Ivana   Мне кажется что объявление - чистая надстройка Си,...   Mar 1 2012, 16:56
- - toweroff   Вопрос. Мы говорим о расширении языка для MC?   Mar 1 2012, 17:03
- - _Ivana   Цитатаupd никогда не заморачивался, но проверил......   Mar 1 2012, 17:05
- - toweroff   Цитата(_Ivana @ Mar 1 2012, 20:56) ЗЫ а я...   Mar 1 2012, 17:07
- - _Ivana   Сергей Борщ очередное спасибо за грамотное и детал...   Mar 1 2012, 18:11


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 05:40
Рейтинг@Mail.ru


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