Как инициализировать указатель структуры typedef

0

Мне нужно инициализировать указатель структуры typedef

в заголовочном файле,

typedef struct {
    DWORD RxBuf[4];             
    DWORD Tr0c;                 
} t, *p_t;

В файле cpp,

static p_t p1
    = {
    {0x00,0x00,0x00,0x00},  
    0               
};
  • 0
    Вы объявили p1 как указатель, поэтому инициализация должна быть указателем.
  • 0
    Вам нужно что-то, чтобы указатель указывал на . Вы дали инициализатор для этой вещи, а не для указателя на эту вещь.
Показать ещё 1 комментарий
Теги:
pointers
struct
typedef

2 ответа

2
Лучший ответ

Просто думаю, я думаю, вы хотите сделать:

static t tNull
    = {
    {0x00,0x00,0x00,0x00},  
    0               
};

static p_t p1 = &tNull;
  • 0
    Я думаю , что это хорошая идея сделать tNull постоянной.
  • 0
    @RaydelMiranda: Нет, если вы хотите, чтобы этот тип указателя указывал на него. (Почему вы хотите определить этот тип указателя - другое дело, но это то, о чем просит OP).
1

p_t - указатель, поэтому вы должны указать его на действительный объект типа t.

Вы можете сделать объект и указать на него:

t var = { { 1 , 2 , 3 , 4 } , 5  } ;
p_t pointer = &var ;

Или используйте составной литерал:

p_t pointer = &( t ){ { 1 , 2 , 3 , 4 } , 5  } ;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню