使用typedef结构

时间:2013-12-13 04:12:31

标签: c struct typedef

typedef struct pjmedia_endpt pjmedia_endpt;

struct pjmedia_endpt endpt和pjmedia_endpt endpt的声明都没问题(“变量有不完整的类型struct pjmedia_endpt endpt”)。

我想声明一个变量pjmedia_endpt,该怎么做。

5 个答案:

答案 0 :(得分:2)

除非你完成这样的不完整类型,否则

struct pjmedia_endpt
{
   member1;
   member2;
   ...
};

您无法使用pjmedia_endpt

完成结构后,即可使用

pjmedia_endpt temp; // Declare a variable to it

答案 1 :(得分:2)

您的typedef建立了前瞻性声明。在此前向声明之后,您可以定义“指向pjmedia_endpt的指针”类型的变量,如下所示:

pjmedia_endpt *ptrVar;

但是,在提供实际定义之前,前向声明本身不足以声明变量或struct字段。在开始使用新的类型pjmedia_endpt进行变量声明之前,需要定义pjmedia_endpt的实际结构:

struct pjmedia_endpt {
    ...
};

答案 2 :(得分:0)

您必须使用typedef根据预定义的结构或类型定义新类型。否则,除非定义pjmedia_endpt结构,否则不能使用该新类型声明变量。

首先定义你的结构:

struct pjmedia_endpt{
    // ...
};

然后你可以为你的结构分配一个类型名称:

typedef struct pjmedia_endpt pjmedia_endpt;

然后您可以使用新类型声明变量:

pjmedia_endpt someVariable;

答案 3 :(得分:0)

这是一个函数需要pjmedia_endpt。     pjmedia_transport_udp_create(pjmedia_endpt * endpt,...);

实际上我需要的是一个指针,所以改为

//declare a pointer.
pjmedia_endpt* endpt;
//do init endpt.then pass pointer to the function.
pjmedia_transport_udp_create(endpt,...);

答案 4 :(得分:0)

typedef struct pjmedia_endpt{
    // ...
};

// Now Rename the structure

pjmedia_endpt newname;

// And now you can access the member of structure with newname.