c - 带有 typedef 的结构并声明一个函数

标签 c struct typedef

创建结构时你可以做

struct name {
 ...
} var1, var2;

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

如果你想做 typedef 语法是

typedef <existing type> <alias> 

为你做的结构类型做一个typedef

typedef struct name(optional) {
 ...
} Typename;

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

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

最佳答案

不,不可能。没有语法。


切线相关的是,未标记的结构是可能的:

struct {
    ...
} var1, var2;

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


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

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

struct name {
 ...
};

struct name var1, var2;

或者,使用 typedef:

typedef struct name {
 ...
} name;

name var1, var2;

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

关于c - 带有 typedef 的结构并声明一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73697429/

相关文章:

c - 为什么需要左值作为增量操作数错误?

c - 如何在 Linux 中使用 C 中的多个管道运行命令?

c - 如何将两个32位整数组合成一个64位整数?

go - 通过另一个结构字段的类型声明结构字段的类型

arrays - 检查结构字符串数组是否包含另一个字符串数组的元素

c - FFmpeg AVFrame 音频数据修改

c - 请求非结构或 union 中的成员 ‘thisWalkno’。 (P线程)

c++ - 基类使用父类定义的类型

c++ - 标识符 "xxx"未定义,类指针和结构

c++ - typedef 没有替换为数据类型