具有 typedef 的结构并声明函数

Nic*_*nza 2 c struct typedef

创建结构体时你可以这样做

struct name {
 ...
} var1, var2;
Run Code Online (Sandbox Code Playgroud)

创建结构名称类型的变量。

如果你想做 typedef 语法是

typedef <existing type> <alias> 
Run Code Online (Sandbox Code Playgroud)

为您所做的结构类型执行 typedef

typedef struct name(optional) {
 ...
} Typename;
Run Code Online (Sandbox Code Playgroud)

其中 typename 是别名,struct 部分是现有类型。

我想知道您是否可以合并上面的代码部分。ex 对结构体执行 typedef,如第二个示例中所示,并在同一行中声明 var1 和 var2,就像我们在第一个示例中所做的那样。这似乎不可能,因为 Typename 似乎取代了 var1 和 var2

hyd*_*yde 5

不,不可能。没有相应的语法。


切线相关的是,可能的是具有未标记的 struct

struct {
    ...
} var1, var2;
Run Code Online (Sandbox Code Playgroud)

附带说明一下,通过不为结构添加 typedef 可以避免该问题。


更一般地说,如果每个语句只做一件事(例如定义变量定义类型),则代码更容易理解。因此,即使这是可能的,这样做也不一定是一个好主意。

根据同样的原则,如果您决定遵循它,您应该写:

struct name {
 ...
};

struct name var1, var2;
Run Code Online (Sandbox Code Playgroud)

或者,使用 typedef:

typedef struct name {
 ...
} name;

name var1, var2;
Run Code Online (Sandbox Code Playgroud)

注意:如果您不需要结构本身中指向相同结构类型的指针(基本上链表和树需要),您可以使用未标记的结构:typedef struct { ... } name;