C语言编译中出现main.c(15): error: #130: expected a “{“的情况汇总——持续更新

C语言编译中出现main.c(15): error: #130: expected a "{"的情况汇总——持续更新

先说一个CSDN 的BUG,我第一次用CSDN,输入本文章的标题时,在复制main.c(15): error: #130: expected a "{"之后,标题就无法显示了,经过多次尝试,发现标题识别在第一个英文输入下的右括号,即“)”结束,故必须把main.c(15): error: #130: expected a "{"中c(15)中的括号改为中文输入下的括号。
网上查了一下,标题所述的问题有很多种情况,我目前遇到了一种很奇葩但很有意义的错误原因,记录在此供大家交流学习,其他类型的错误我有空会进行整理

问题描述

情况1

为简单起见,我举一个非常简单的例子,主文件main.c内代码1如下:

#include "stm32f10x_gpio.h"
int main (void)
{
	int i;
	i=1;
}

就是简单的定义一个整形变量i,并给i赋值为1,可以看出主函数内的内容是完全没问题的,分号";"也是英文输入法下的格式。
但是编译后还是报错main.c(15): error: #130: expected a “{”,让人摸不到头脑。

解决方案

情况1方案

其实代码很简单,就这么短,在反复确认主函数内部没有问题后,就应该考虑主函数之外的内容了,实际上主函数之外就只剩下C语言的预编译命令:

#include "stm32f10x_gpio.h"

该命令将头文件包含进main.c文件,在编译中,实际上编译器就会将stm32f10x_gpio.h中的文件复制到main.c中,代替预编译命令的位置。而我的stm32f10x_gpio.h中内容为:

void GPIO_SetBits(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin);
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

包含了两个函数头,而细心点就会发现上述代码第二行少了一个分号“;”
就是这个错误,在编译时,编译器把stm32f10x_gpio.h中的文件复制到main.c中,代替预编译命令的位置后,就发现主函数前一行少了一个分号,故而报错,至于为什么报错少一个“}”而不是报错漏了一个“;”,我就不得而知了。

总结

1.在主函数附近的错误,需要考虑函数外经跟着的内容,包括函数前和函数后;

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值