keil或IAR出现错误declaration is incompatible

tech2025-08-09  3

错误来源

.\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

最新回复(0)