STM32中出现 error: #268: declaration may not appear after executable statement in block的问题

今天在复习STM32的过程中,发现了一个以前遇到过的问题,之前解决过了,现在又忘了,所以在这里整理一下。

在 led.c 和 led.h 中定义完 void led_init(void) 之后,如果在 main 函数中调用 led_init(), 不能加上参数void,否则的话就会出现题目中出现的错误,这个错误的原因是对于变量的声明不能放在可执行语句后面,必须在主函数开头声明变量。换句话来说,如果在 main 函数中以 void led_init(void) 的形式去初始化 led,系统会把它当做 led_init() 函数的声明,这才有了题目中错误的产生。

/*main.c*/
int main(void)
{        
	void LED_Init(void);					//初始化LED 
}


main.c(42): error:  #268: declaration may not appear after executable statement in block
            void LED_Init(void);                                   //初始化LED 


/*led.h*/

#ifndef __LED_H
#define __LED_H

void led_init(void);

#endif

同样的,对于 delay_init 函数而言,在 delay.c 中定义时为 void delay_init(u8 SYSCLK),而在 main 函数中初始化时就要以 delay_init(168); 的形式,否则系统也会默认它是一个函数声明,会报错。

猜你喜欢

转载自blog.csdn.net/qq_41769322/article/details/88343698