cubeIDE中使用函数时的逆天问题(字节对齐)

cubeIDE中使用函数时的逆天问题(字节对齐)

某日,我在写代码,但是出现了一个逆天问题,如何逆天?
这是一个我在.c里面写的一个代码

/*
 * arm.h
 *
 *  Created on: Nov 30, 2024
 *      Author: yu
 */

#ifndef INC_ARM_H_
#define INC_ARM_H_
#pragma pack(1)//规定结构体字
// 定义个起重机的结构体
typedef struct {
    float position;    // 纵轴3508,动的数
    float position_x;    // 伸缩X动的数值
    float position_argue; // 动的角度,旋转轴
}cash;


extern cash cash_rx_buffer[5];


void judge_block(void);
void Quick_fromtable_To_block(void);
void grab_object(void);
void reset_position(void);
void steering_engine(float num);
void rotation_reset(void);
void In_occlusion_region(void);
void Not_In_occlusion_region(void);
void occlusion_region(void);


void open();


#endif /* INC_ARM_H_ */

大家可以很清楚的看到我使用了#pragma pack(1),让其以1字节对齐,但是我用不了下面声明的函数,因为下面所有函数都是以1字节去对齐的,但是函数相当于指针,有四字节,那么下面整个都乱了,这就是为什么我直接在while里面写就有用,但是函数调用就用不了,而且还能debug,还用了示波器,但是一直没有发现原因,最后解决还是我们电控组老大发现了这个逆天问题。

# 解决方法

只需要将后面的字节对齐方式回到四字节对齐就好了,如下代码所示

#pragma pack(1)//规定结构体字
// 定义个起重机的结构体
typedef struct {
    float position;    // 纵轴3508,动的数
    float position_x;    // 伸缩X动的数值
    float position_argue; // 动的角度,旋转轴
}cash;

#pragma pack()

# 总结

这个逆天问题,我自己确实也挺逆天,看了两天,愣是毛看明白,大家学东西还是不能学一半的,需要学习理解明白,勿喷啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值