我正在使用memcmp()
相同结构的两个变量进行比较(结构中有联合)。变量在两个数组中,我正在运行一个循环,每次迭代我都会这样做memcmp(&arr1[i], &arr2[i], sizeof(arrtype))
。
调试时,我看到 memcmp 返回 -1,但查看两个变量及其值,我发现变量具有相等的值。这些数组在开始时用 memset 清零。
- 那么有人知道为什么
memcmp
返回-1而不是0吗? - 有没有更好的方法来做我需要的事情(比较两个内存块)?
代码:
typedef struct type1 {
int version;
union {
option1_t opt1;
option2_t opt2;
} union_t;
} type1_t;
typedef struct type0 {
type1_t member1;
type2_t member2;
type3_t member3;
type4_t member4;
type5_t member;
} type0_t;
type0_t arr1[SIZE];
type0_t arr2[SIZE];
memset(arr1, 0, SIZE * sizeof(type0_t));
memset(arr2, 0, SIZE * sizeof(type0_t));
/* doing irrelevant stuff... */
/* get values into arr1, arr2 ... */
/* comparing both arrays in for loop*/
value = memcmp(&arr1[i], &arr2[i], sizeof(type0_t));