在我的操作系统(vxWorks)中,有一个名为stat
的结构和一个名为stat
的函数。
如果我memset((void*)&myStruct, 0, sizeof(stat));
我使用的是函数的大小还是struct的大小? IDE将 stat 加粗,就好像它是一个函数一样。我该如何暗示使用该结构?
答案 0 :(得分:5)
struct
标签生活在不同名称空间中-它们不命名类型。确实还有一个名为stat
的函数。
您必须使用
sizeof (struct stat)
获取struct
with the tag stat
的大小。
如果您使用sizeof (stat)
(即sizeof stat
),则stat
函数将转换为指向函数的指针,这就是{{1 }}计算,结果例如4或8,具体取决于指针的宽度。
如果有一个 typedef ,则可以使用它代替sizeof
,而无需使用struct stat
关键字:
struct
甚至更好:删除对typedef struct stat STAT;
...
sizeof (STAT)
的强制类型转换-在C语言中是不必要的。并且将(void*)
与变量代替:
sizeof
请注意,memset(&myStruct, 0, sizeof myStruct);
仅需要为类型而不是表达式添加括号。