gpt4 book ai didi

C 使用 typedef 或 #define 定义结构

转载 作者:行者123 更新时间:2023-11-30 21:48:50 24 4
gpt4 key购买 nike

我对两种 Action 的表现有疑问(以任何方式)这个问题很简单,但有一个大问题(当有两种方法时,哪一种更好)我想用C语言创建结构。这对我来说有两个选择

1-在.h文件中定义它并在程序中使用它

typedef struct {
int id;
} myStructure;

2 - 使用这种定义来定义这个结构

#define myStructure struct { int id; }

哪种方式更好?我知道我们更多地使用方式1,但我不知道为什么我认为第二种方式是定义的母方式请比较这种方式(无论如何性能)

更新 1:
谢谢您的回答。在最后两个响应中,我得到了这个原因,如果我们想在函数参数中使用该变量,我们就不能使用第二种方法。这是真的,但只有一点。我们也可以将该函数设为宏函数,这样就可以解决问题。像这样的东西

#define myStructure struct { int id; }
#define FUNC(__MYSTRUCTURE) printf("%d", __MYSTRUCTURE.id)
int main() {
myStructure var1;
var1.id = 542;
FUNC(var1);
}

最佳答案

这两种方式实际上没有任何共同点。例如,如果使用宏版本,以下代码无效

myStructure *p1 = 0;
myStructure *p2 = 0;
p1 = p2; // <- Type mismatch

typedef 版本的行为将“按预期”。这意味着您的宏版本并未真正定义以任何方式“可重用”的类型。它可能“适用于”某些利基、狭窄和受限的目的,但它的可用性远不及 typedef 版本。

关于C 使用 typedef 或 #define 定义结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48344441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com