Keil编译器有很多奇怪的地方。 例如,许多程序的编写是无法在Keil编译器中实现的。 然后,不报告错误。 然后,不可思议地冻结。
如果结构中只包含指针函数,则正常调用。 如果指针函数和参数都存在,则会死机。
同一方法在其他编译器(如QT自动编译器)中工作正常
typedef struct { uint8_ tso charging; //充电状态uint8_t soDsarging; //放电状态uint8_t soChargMos; //充电MOSuint8_t soDsargMos; //放电MOSuint8_t soCharger; //充电器uint8_t soLoader; //负载void(*sochargmoscontrol ) uint8_t status; //充电MOS控制void(*sodsargmoscontrol ) uint8_t status; //放电MOS控制} PreventSparkStruct; voids h309 chgmosconrotl (uint8_ tvalue ) {uint8_t tempStatus=0; 打印(testaa ); } voids h309 dsgmosconrotl (uint8_ tvalue ) {uint8_t tempStatus=0; printf(testbb ); } voidsoftpreventspark (preventsparkstruct * temppreventspark ) {static uint16_t pretimer=0; static uint8_ tpreventsparkstatus=0; temppreventspark-sodsargmoscontrol (1; } preventsparkstructpreventsparkdata; void main () preventsparkdata.sochargmoscontrol=s h309 chgmosconrotl; preventsparkdata.sodsargmoscontrol=s h309 dsgmosconrotl; softpreventspark (preventsparkdata; }