C, Contiki rime, перенос структуры

Я определил структуру

typedef struct {
 unsigned short a;
 unsigned short b;
} my_struct;

Передающий узел создает структуру и передает ее с помощью

my_struct my;
packetbuf_copyfrom((void *)&my, sizeof(data_struct));

Принимающий узел получает доступ к данным через

my_struct *my;
my = packetbuf_dataptr();

Все идет нормально. При попытке доступа к членам a или b структуры

printf("%u", my.a);

Я получил:

"ошибка: запрос члена "а" в чем-то, кроме структуры или объединения".

Если я передам простую строку и получу к ней доступ, все в порядке.


person myveryown    schedule 12.01.2015    source источник
comment
Используйте printf("%hu", my->a);, так как my_struct.a — это unsigned short, а не unsigned int, а my — это my_struct *, а не my_struct.   -  person EOF    schedule 12.01.2015
comment
@EOF: %hu не поддерживается msp430-libc (16-разрядная система). Просто %u просто отлично.   -  person kfx    schedule 12.01.2015
comment
Вы абсолютно правы насчет части my-›a. это работает сейчас. Большое спасибо!   -  person myveryown    schedule 12.01.2015


Ответы (1)


Чтобы получить доступ к элементам структуры, через указатель структуры мы должны использовать оператор стрелки -> (образованный дефисом и символом «больше»).

Чтобы получить доступ к вашему участнику, a используйте

printf("%u", my->a);
or
printf("%u", (*my).a);
person mulukala sri ramana    schedule 12.01.2015