本帖最后由 人造人 于 2019-1-17 10:08 编辑
可以使用memcmp#include <stdio.h>
#include <stdbool.h>
#include <string.h>
typedef unsigned int uint16;
typedef struct /* bits description */
{
uint16 RsvNone : 1; /*0 */
uint16 DRV : 1; /* 1 */
uint16 Soft_OC : 1; /* 2 */
uint16 Hard_OC : 1; /* 3 */
uint16 rsv : 1; /* 4 */
uint16 Over12V : 1; /* 5 */
uint16 Low12V : 1; /* 6 */
uint16 CurU : 1; /* 7 */
uint16 CurW : 1; /* 8 */
uint16 EEP : 1; /* 9 */
uint16 OU : 1; /* 10 */
uint16 LU : 1; /* 11 */
uint16 IGBT_OH : 1; /* 12 */
uint16 PGSignal : 1; /* 13 */
uint16 CurCheck : 1; /* 14 */
uint16 EFT : 1; /* 15 */
uint16 Tune : 1; /* 16 */
uint16 ParaSet : 1; /* 17 */
uint16 VdcCheck : 1; /* 18 */
uint16 Mul_Soft_OC : 1; /* 19 */
uint16 CurSensorU : 1; /* 20 */
uint16 CurSensorV : 1; /* 21 */
uint16 CurSensorW : 1; /* 22 */
uint16 Rsv18 : 9; /* 23 - 31 */
} ERROR_REG;
bool ErrorRegCompare(ERROR_REG *a, ERROR_REG *b)
{
return !memcmp(a, b, sizeof(ERROR_REG));
}
int main(void)
{
ERROR_REG a = {0xAA55};
ERROR_REG b = a;
if(ErrorRegCompare(&a, &b))
printf("a == b\n");
else
printf("a != b\n");
b.RsvNone = 0;
if(ErrorRegCompare(&a, &b))
printf("a == b\n");
else
printf("a != b\n");
return 0;
}
|