先看我的代码使用方法:
cpp
struct SGM_SUM_MAX
{//求取标准差、平均值、中误差的必要条件
double Sgm = 0;//标准差
double Sum = 0;//平均值
double Max = 0;//最大值
};
//我在后续使用的时候,是这么使用的(错误示范)
SGM_SUM_MAX TIP_PixX_ZPH;
SGM_SUM_MAX TIP_PixY_ZPH;
SGM_SUM_MAX TIP_PixAll_ZPH;
下面代码省略...
上面这段代码在windows和Linux编译都没有问题,但是在最终使用这个结构体的时候,Linux会出现数值异常。
正确的使用应该如下定义
cpp
struct SGM_SUM_MAX
{//求取标准差、平均值、中误差的必要条件
double Sgm = 0;//标准差
double Sum = 0;//平均值
double Max = 0;//最大值
};
//更改下面的这种定义方式,输出的结果正确,结构体里面的归零不知道为啥不能正确归零,在X86、Arm64 linux系统都必须这样归零定义。
SGM_SUM_MAX TIP_PixX_ZPH = {0,0,0};
SGM_SUM_MAX TIP_PixY_ZPH = {0,0,0};
SGM_SUM_MAX TIP_PixAll_ZPH = {0,0,0};
下面代码省略...
总结一点:在linux代码中自定义的结构体初始化,必须在定义的时候手动归零,结构体内部的归零可能有问题。