关入函数返回值或参数是结构体的问题
Keil C下一个计算坐标的函数W_ComputeG,
最开始是想把计算后的结果直接Return的,后来发现不行,网上查了下资料说是局部变量在函数结束后被释放了,所以无法返回正确的结果
后来又把计算的结果放在参数中,结果还是不对
//struct.h#ifndef _STRUCT_H_#define _STRUCT_H_struct typeps{int x;int y;};typedef struct typeps CPOS;//定义坐标....#endif
//main.c#ifnef _STRUCT_H_#include "struct.h"#endifxdata CPOS gp;/**************************************************************************Name: W_ComputGReturn: 重心位置Parameter:Description: 计算中心假设传感器这样排列 Y 100CH1 CH4(100,100) ^ | | |CH2(0,0) CH3 ------->X 100***************************************************************************/CPOS W_ComputG1(void) //该方法被证明行不通{ float g; long tot; CPOS temp; tot=wei[0]+wei[1]+wei[2]+wei[3]; if(tot<=0) { temp.x=temp.y=50; return temp; } g=(float)(wei[0]+wei[3])/tot; temp.y=(int)ceil(g*100); g=(float)(wei[2]+wei[3])/tot; temp.x=(int)ceil(g*100);}void W_ComputG2(CPOS temp){ float g; long tot; tot=wei[0]+wei[1]+wei[2]+wei[3]; if(tot<=0) { temp.x=temp.y=50; return; } g=(float)(wei[0]+wei[3])/tot; temp.y=(int)ceil(g*100); g=(float)(wei[2]+wei[3])/tot; temp.x=(int)ceil(g*100);}void main(void){... W_ComputeG2(gp);}