Keil MDK 嵌入式项目开发的一些问题:expected a “{“、declaration is incompatible with previous

  • 在使用 Keil MDK 开发项目,编译时,报如下错误
*** Using Compiler 'V5.06 update 1 (build 61)', folder: 'D:\Keil_v5\ARM\ARMCC\Bin'
Build target 'iwdg'
assembling startup_stm32f10x_hd.s...
compiling main.c...
user\main.c(3): error:  #130: expected a "{"
  void IWDG_Init(uint8_t prer, uint16_t rlr) void delay_us(uint16_t us);
user\main.c(8): warning:  #12-D: parsing restarts here after previous syntax error
  {
user\main.c(39): warning:  #223-D: function "delay_ms" declared implicitly
              delay_ms(500);
user\main.c(50): warning:  #223-D: function "IWDG_Feed" declared implicitly
              IWDG_Feed();
user\main.c(53): warning:  #223-D: function "delay_ms" declared implicitly
          delay_ms(10);
user\main.c(57): error:  #247: function "IWDG_Init" has already been defined
  void IWDG_Init(uint8_t prer, uint16_t rlr)
user\main.c(75): error:  #159: declaration is incompatible with previous "IWDG_Feed" (declared at line 50)
  void IWDG_Feed(void)
user\main.c(89): error:  #159: declaration is incompatible with previous "delay_ms" (declared at line 39)
  void delay_ms(uint16_t ms)
user\main.c: 4 warnings, 4 errors
compiling system_stm32f10x.c...
compiling core_cm3.c...
".\Objects\iwdg.axf" - 4 Error(s), 4 Warning(s).
Target not created.
Build Time Elapsed:  00:00:00
问题原因
  1. 第 3 行错误 expected a "{":函数声明语法错误,在一行中写了两个函数声明:void IWDG_Init(...) void delay_us(...)

  2. 第 57 行错误 function "IWDG_Init" has already been defined:函数 IWDG_Init 已经被定义过了,不能重复定义

  3. 第 75 行错误 declaration is incompatible with previous "IWDG_Feed":函数 IWDG_Feed 的声明与之前的定义不兼容,大概率是函数声明的参数列表不同

  4. 第 89 行错误 declaration is incompatible with previous "delay_ms":函数 delay_ms 的声明与之前的定义不兼容,大概率是函数声明的参数列表不同

处理策略
  1. 检查第 3 行,确保函数声明语法正确
void IWDG_Init(uint8_t prer, uint16_t rlr);
void delay_us(uint16_t us);
  1. 检查重复定义,确保每个函数只定义一次

  2. 确保声明一致性,函数声明和定义应该完全一致,包括返回类型和参数类型

你可能感兴趣的:(嵌入式,-,问题清单,嵌入式硬件,嵌入式,嵌入式软件,c,c语言,c++,stm32)