错误来源
.\ECAT\inc\STM32appl.h(38): error: #147: declaration is incompatible with "unsigned shortnPdInputSize" (declared at line 396 of ".\ECAT\inc\ecatslv.h")
extern UINT16 nPdInputSize;
.\ECAT\inc\STM32appl.h(39): error: #147: declaration is incompatible with "unsigned short nPdOutputSize" (declaredat line 398 of ".\ECAT\inc\ecatslv.h")
翻译:声明是不相容的
描述:在函数还没有声明之前就已经使用了.多出现在两种情况:第一种,函数体还没有写,就已经用到了它,这种情况多出现在写一个程序的大体结构中,只是简单写一下框架.第二种情况比较常见,函数a调用函数b,但函数b的函数体在函数a的下面:
void a(void) //函数a的实体
{
b(); //调用函数b
}
void b(void) //函数b的实体
{
}
这样如果点编译,就会产生
我已经依据此方法解决该问题。。。
但是在st官方的解决方法中,不是这样的。
core_cm3.h文件太老了,2009年的,与新版本的IAR6.3不兼容,IAR 6.3用的是2011年的,使用IAR自带的就行了
1,把老的core_cm3.h去掉,删除,或者改成core_cm3.h.old。
2,Project ->Options -> General Options -> Library Configuration -> Use CMSIS,右下角的选项中选择 use CMSIS
具体内容在网址
http://www.emcu.it/ARM_Compiler/IAR/IAR_tips_and_tricks.html