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

 
 
> структуры, доступ к полям
Метценгерштейн
сообщение Feb 8 2015, 10:08
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



вот у нас структура, через typedef
Код
typedef struct abc_s {
  int aa;
  int bb;
} abc_t;

создаю переменную этого типа
Код
abc_t abc;

дальше, хочу присвоить значение полю aa в моей переменной
Код
abc.aa = 8;

выдает ошибку. Почему? И как правильно?

а затолкав в ф-ю - все нормально. Т.е. вне ф-ии нельзя, получается, проводить начальную инициализацию?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Feb 8 2015, 17:03
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Что-то у меня легко задается элемент структуры в майн-функции. Правда, я не пишу
typedef struct abc_s {
...
Зачем давать название структуре, если будет использоваться определение типа?
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 8 2015, 17:14
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(ViKo @ Feb 8 2015, 20:03) *
Зачем давать название структуре, если будет использоваться определение типа?


Обычно, так по привычке выходит... Чтобы, если что, внутри структуры можно было написать нечто вроде struct abc_s *next_item; и никто это не обругал.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 8 2015, 17:20
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(SM @ Feb 8 2015, 20:14) *
Обычно, так по привычке выходит... Чтобы, если что, внутри структуры можно было написать нечто вроде struct abc_s *next_item; и никто это не обругал.

Попробовал. Не получается. Но и имя структуры тоже не помогает. Нужно саму структуру определить.
А, нет, получилось (в обоих вариантах). Когда struct перед типом добавил.
Код
typedef struct {
  __IO uint8_t A;
  __IO uint8_t B;
  uint16_t RES;
  // bool a;
  struct Dev_t *pDev;
} Dev_t;
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 8 2015, 17:35
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(ViKo @ Feb 8 2015, 20:20) *
Попробовал. Не получается.


Все получается:

Код
typedef struct _abc_s {
  int a;
  int b;
  struct _abc_s *next;
} ABC_S, *PABC_S;


а вот запись

struct ABC_S *next; (вместо struct _abc_s *next;)

по логике не совсем корректна, так как ABC_S определен через typedef, а не через сам struct. По крайней мере, не красива, если даже и корректна по стандарту (я тут не уверен).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   структуры   Feb 8 2015, 10:08
- - SM   правильно вот так: abc_t abc = {8,9}; // по станд...   Feb 8 2015, 10:20
- - _Pasha   Цитата(Метценгерштейн @ Feb 8 2015, 14:08...   Feb 8 2015, 11:31
- - Метценгерштейн   я разобрался. нельзя одно поле инициализировать вн...   Feb 8 2015, 12:14
|- - SM   Цитата(Метценгерштейн @ Feb 8 2015, 15:14...   Feb 8 2015, 12:16
|- - SSerge   Цитата(SM @ Feb 8 2015, 19:16) Можно...   Feb 8 2015, 12:40
|- - SM   Цитата(SSerge @ Feb 8 2015, 15:40) Это да...   Feb 8 2015, 12:55
|- - ohmjke   Цитата(SM @ Feb 8 2015, 21:14) Обычно, та...   Apr 2 2015, 13:12
|- - CrimsonPig   Цитата(ohmjke @ Apr 2 2015, 14:12) Так а ...   Apr 2 2015, 13:40
|- - SSerge   Цитата(ohmjke @ Apr 2 2015, 20:12) Но мне...   Apr 2 2015, 15:56
- - ViKo   Возвращаясь к стартовому вопросу... У меня всё раб...   Feb 8 2015, 17:39
|- - SM   Цитата(ViKo @ Feb 8 2015, 20:39) И я не п...   Feb 8 2015, 17:41
- - ViKo   Я же написал, что работает. В Keil. В Main вот так...   Feb 8 2015, 17:59
- - SM   Цитата(ViKo @ Feb 8 2015, 20:59) В Main в...   Feb 8 2015, 18:00
- - ViKo   Цитата(SM @ Feb 8 2015, 21:00) А вне Main...   Feb 8 2015, 18:06


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

 


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


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