2014-10-29 81 views
0

我需要初始化一個typedef結構指針如何initiaze一個typedef結構指針

在頭文件

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

在cpp文件,

static p_t p1 
    = { 
    {0x00,0x00,0x00,0x00}, 
    0    
}; 
+0

您已經聲明'p1'爲指針,所以初始化需要成爲一個指針。 – user3386109 2014-10-29 17:00:53

+0

你需要一些指針指向*指向*。你已經給了這個東西的初始化器,而不是指向那個東西的*指針。 – 2014-10-29 17:02:48

+0

memset(g_pT,0,sizeof(t));' – Quest 2014-10-29 17:05:16

回答

2

只是一個猜測,我相信你想要做的事:

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

static p_t p1 = &tNull; 
+0

我認爲'tNull'常數是個好主意。 – 2014-10-29 17:06:14

+0

@RaydelMiranda:如果您希望此指針類型指向它,則不是。 (爲什麼你想要定義這個指針類型是另一回事,但這是OP要求的。) – 2014-10-29 17:13:23

1

p_t是一個指針,因此您必須將其指向t類型的有效對象。

可以使對象並指向它:

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

或者使用文字的化合物:

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