【发布时间】:2019-08-26 17:29:07
【问题描述】:
当结构具有固定长度的数组时,使用 sizeof(struct) 是一种好的编码习惯吗?
#define NUM_TRACKS 10
#define NUM_SAMPLES 250
typedef struct _DATA_PROC
{
uint16_t count[NUM_TRACKS] ;
int16_t data[NUM_TRACKS][NUM_SAMPLES];
} tDataProcessing ;
tDataProcessing* tDp = malloc(sizeof(tDataProcessing)) ;
【问题讨论】:
-
其他阅读本文的一些相关问题:stackoverflow.com/questions/57662381/…
-
为什么不呢?
-
我想确保某些编译器不会将其解释为: typedef struct _DATA_PROC { uint16_t* count ; int16_t** 数据; } tDataProcessing ;
-
请在问题中输入代码,在评论中不可读。不,它不会那样做。
sizeof将为您提供存储对象所需的大小。数组在对象本身之内,而不是它所指向的。 -
不允许编译器将问题中的结构曲解为
typedef struct _DATA_PROC { uint16_t* count; int16_t** data; } tDataProcessing;— 至少,如果确实如此,它不能声称是符合标准的 C 编译器。