gpt4 book ai didi

C 函数和结构体的区别

转载 作者:行者123 更新时间:2023-12-02 09:10:10 25 4
gpt4 key购买 nike

在我的操作系统 (vxWorks) 中,有一个名为 stat 的结构体和一个名为 stat 的函数。

如果我memset((void*)&myStruct, 0, sizeof(stat));

我使用的是函数的大小还是结构的大小? IDE 将 stat 加粗,就像它是一个函数一样。我如何暗示使用该结构?

最佳答案

struct 标记位于不同的命名空间中 - 它们不命名类型。确实还有一个名为 stat 的函数.

您必须使用

sizeof (struct stat)

获取 struct with the tag stat 的大小.

如果您使用sizeof (stat)(即sizeof stat),则stat函数将被转换到函数指针,这就是 sizeof 的计算结果,例如4 或 8,具体取决于指针的宽度。


如果有一个typedef,那么可以使用它来代替struct stat,而无需struct关键字:

typedef struct stat STAT;

...

sizeof (STAT)

更好的是:删除对 (void*) 的强制转换 - 这在 C 中是不必要的。并使用 sizeof变量:

memset(&myStruct, 0, sizeof myStruct);

请注意,sizeof 仅对于类型需要括号,而对于表达式则不需要。

关于C 函数和结构体的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53323571/

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