Typedef结构问题

Dog*_*Dog 3 c struct typedef

我为什么要这样做?

typedef struct Frame_s
{
int x;
int y;
int z;
} Frame_t;
Run Code Online (Sandbox Code Playgroud)

此外,如果我想创建一个对象,我使用Frame_s或Frame_t?

Pab*_*ruz 6

你会用的Frame_t.

随着typedef你是说Frame_tstruct Frame_s完全相同的类型.

所以这些是等价的句子:

// 1
Frame_t f;

// 2
struct Frame_s f;
Run Code Online (Sandbox Code Playgroud)

我会用:

typedef struct
{
   int x;
   int y;
   int z;
} Frame_t;
Run Code Online (Sandbox Code Playgroud)

并且总是声明我的vars像这样:

Frame_t f1, f2, f3;
Run Code Online (Sandbox Code Playgroud)

混淆通常来自您在C++代码段中使用该句子的地方.如果你使用C++,typedef你可以使用:

// 1
Frame_t f;

// 2
Frame_s f;
Run Code Online (Sandbox Code Playgroud)

但是如果使用普通的C编译器,则//2无效.