Keil编译器--结构体指针函数;结构体作为参数时,不能调用结构体指针函数

2 篇文章 0 订阅
1 篇文章 1 订阅

Keil编译器很多奇葩的地方,比如很多程序的写法在keil编译器里面实现是实现不了的,并且不报错,而且莫名其妙的死机。

结构体里面只有指针函数时,是可以正常调用的,当同时存在指针函数和参数时,就会死机。

相同的方法在其它编译器中是正常运行的,比如QT自动的编译器

typedef struct{
	uint8_t soCharging;//充电状态
	uint8_t soDsarging;//放电状态
	uint8_t soChargMos;//充电MOS
	uint8_t soDsargMos;//放电MOS
	uint8_t soCharger;//充电器
	uint8_t soLoader;//负载
	void (*soChargMosControl)(uint8_t status);//充电MOS控制
	void (*soDsargMosControl)(uint8_t status);//放电MOS控制
} PreventSparkStruct;

void sh309CHGMOSConrotl(uint8_t value){
	uint8_t tempStatus = 0;
	printf("test  aa");
}
void sh309DSGMOSConrotl(uint8_t value){
	uint8_t tempStatus = 0;
	printf("test  bb");
}



void softPreventSpark(PreventSparkStruct *tempPreventSpark){
	static uint16_t pretimer = 0;
	static uint8_t  preventSparkStatus = 0;
	tempPreventSpark->soDsargMosControl(1);
	}
PreventSparkStruct preventSparkData;

void main(){
	preventSparkData.soChargMosControl = sh309CHGMOSConrotl;
	preventSparkData.soDsargMosControl = sh309DSGMOSConrotl;
	softPreventSpark(&preventSparkData);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值