本文主要是介绍编译报错declaration may not appear after executable statement in block,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这个错误是因为在代码块中,声明语句不能出现在可执行语句之后。也就是说,如果你在一个代码块中先写了一些可执行语句,再写了一 些声明语句,就会出现这个错误。
解决方法:将声明语句放在可执行语句之前,或者将声明语句放在代码块的开头。这样就可以避免这个错误了。
相同问题
main.c(27): error: #268: declaration may not appear after executable statement in block 回答: 这个错误是因为在C语言中,局部变量的定义必须放在所有执行语句之前,或者使用C99标准允许的任何位置。在你的代码中, GPIO_InitStruct的定义放在了执行语句之后,导致了这个错误。你可以将GPIO_InitStruct的定义放在函数开头,或者将代码改为符合C99 标准的写法。
一个简单STM32的库函数的例子,最常用的GPIO设备的初始化函数为例:
/*****************************引脚初始化*************************************/
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟
//USART1_TX GPIOA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
其功能是将GPIOA.9口初始化为推挽输出状态,并最大翻转速率为50MHz。
这篇关于编译报错declaration may not appear after executable statement in block的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!