如何查找数据类型是否为结构?

How to find if the data type is a struct?

假设你在 C 中有结构 my_struct。 然后你正在使用 sizeof(my_struct) 来查找该结构有多少字节。有什么方法可以通过在 C 中使用 sizeof() 方法来找出 my_struct 是一个结构吗?

例如,如果我想找出 my_variable16-bit,那么我只检查 sizeof(my_variable) == 2.

我可以对 C 中的结构做同样的事情吗?

Can I do the same for struct in C?

sizeof(my_variable) 对结构和非结构做完全相同的事情。

具体来说,

  • sizeof( my_variable ) == 2 并不意味着变量用完了 16 位。

    表示my_variable用完了2个字节。尽管如今一个字节的大小通常为 8 位,但情况并非总是如此。从历史上看,它们有 32 位那么大!

  • sizeof( my_variable ) == 2不代表变量可以存储16位数字

    sizeof 除了大小之外,没有说明任何类型。

例如,

sizeof( long ) sizeof( float )sizeof( struct { char a; int b; } ) 都可以 return 相同的数字。