This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

函数定义和声明冲突,编译居然不报错

Expert 1795 points
Other Parts Discussed in Thread: TMS320F28035

CCS版本 6.1.0.00104

TMS320F28035, 编译器版本TI V6.4.4

在一个文件中定义一个函数

#include <DSP2803x_Device.h>

void EPWM_Init(volatile struct EPWM_REGS *EPwmRegs[],Uint16 PeriodMax)
{

}

在另一个文件中错误地声明并调用这个函数

#include <DSP2803x_Device.h>

extern void EPWM_Init();  //忘记带上参数了

void main(void)

{

volatile struct EPWM_REGS *EPwmRegs[4]; //作为函数调用的一个参数

//以下两种调用都不报错

EPWM_Init(EPwmRegs);
EPWM_Init();

//只有这种调用报错了

EPWM_Init(0);

}

编译不报错,还能运行,结果产生类似数组下标溢出的错误,乱改内存。

因为这个函数我暂时不关心,所以没意识到函数错误,结果由于乱改内存,把我调试的串口通讯程序搞得一团糟,还一直以为通讯受到什么干扰,折腾了一天。