记录一个C++ Windows程序移植到Linux系统的bug

先看我的代码使用方法:

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代码中自定义的结构体初始化,必须在定义的时候手动归零,结构体内部的归零可能有问题。

相关推荐
apocelipes1 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
郝学胜_神的一滴2 天前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
见过夏天3 天前
C++ 基础入门完全指南
c++
用户805533698034 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
BadBadBad__AK5 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境5 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境5 天前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴6 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境8 天前
C++ 的Eigen 库全解析
c++
卷无止境8 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端