作者简介

*架构师李肯(全网同名)**,一个专注于嵌入式IoT领域的架构师。有着近10年的嵌入式一线开发经验,深耕IoT领域多年,熟知IoT领域的业务发展,深度掌握IoT领域的相关技术栈,包括但不限于主流RTOS内核的实现及其移植、硬件驱动移植开发、网络通讯协议开发、编译构建原理及其实现、底层汇编及编译原理、编译优化及代码重构、主流IoT云平台的对接、嵌入式IoT系统的架构设计等等。拥有多项IoT领域的发明专利,热衷于技术分享,有多年撰写技术博客的经验积累,连续多月获得RT-Thread官方技术社区原创技术博文优秀奖,荣获CSDN博客专家、CSDN物联网领域优质创作者、2021年度CSDN&RT-Thread技术社区之星、2022年RT-Thread全球技术大会讲师、RT-Thread官方嵌入式开源社区认证专家、RT-Thread 2021年度论坛之星TOP4、华为云云享专家(嵌入式物联网架构设计师)等荣誉。坚信【知识改变命运,技术改变世界】!


【C语言进阶】很诡异的编译报错expected declaration or statement at end of input

一个很诡异的编译报错,不仔细还真发现不了!

1 问题现场

有一天我在调试代码的时候,刚刚代码还好好的,突然来了一个报错:

recan@ubuntu:~/11111$ gcc -o test 111/222/333/444/555/666/777/888/999/test.c
111/222/333/444/555/666/777/888/999/test.c: In function ‘test3’:
111/222/333/444/555/666/777/888/999/test.c:37:1: error: expected declaration or statement at end of input37 | }| ^

这就让我很纳闷,咋回事呢?

2 复现代码

我们来看下当时的代码,为了说明问题,我把无关代码都删除了,仅保留有效代码:

#include <stdio.h>int test1(void)
{return 0;
}int test2(void)
{return 0;
}int test3(void)
{return 0;int test4(void)
{return 0;
}int test5(void)
{return 0;
}int main(void)
{printf("__FILE__: %s\n", __FILE__);return 0;
}

示例代码很简单,就是一堆的函数,然后啥也没干。

3 编译分析

根据编译报错,我们看下,提示 line37行 报错了? 37行不是文件的结束吗?

报错的英文对应的中文含义是:错误:输入末尾应为声明或语句

很显然不是37行有问题吗?我的main函数肯定没有问题啊?

那么有没有可能是前面的函数有问题啊?

原来是 line16 中的test3函数,少了结尾的 } 大括号,导致了编译报错的蔓延。

当然,解决这个编译问题也很简单,把test函数的大括号补上即可。

4 小小总结

  • 排查编译问题,不要仅局限于报错的行号,找找上下文,可能别人的错误导致了你的错误;
  • 误删一行 } 大括号,不经意间就报错了;
  • 代码管理,一定要用起来;这种情况,实在不行就比对下代码,很容易就发现问题了。

5 更多分享

架构师李肯

架构师李肯全网同名),一个专注于嵌入式IoT领域的架构师。有着近10年的嵌入式一线开发经验,深耕IoT领域多年,熟知IoT领域的业务发展,深度掌握IoT领域的相关技术栈,包括但不限于主流RTOS内核的实现及其移植、硬件驱动移植开发、网络通讯协议开发、编译构建原理及其实现、底层汇编及编译原理、编译优化及代码重构、主流IoT云平台的对接、嵌入式IoT系统的架构设计等等。拥有多项IoT领域的发明专利,热衷于技术分享,有多年撰写技术博客的经验积累,连续多月获得RT-Thread官方技术社区原创技术博文优秀奖,荣获CSDN博客专家、CSDN物联网领域优质创作者、2021年度CSDN&RT-Thread技术社区之星、2022年RT-Thread全球技术大会讲师、RT-Thread官方嵌入式开源社区认证专家、RT-Thread 2021年度论坛之星TOP4、华为云云享专家(嵌入式物联网架构设计师)等荣誉。坚信【知识改变命运,技术改变世界】!

【C语言进阶】很诡异的编译报错expected declaration or statement at end of input相关推荐

  1. C编译报错: implicit declaration of function xxx is invalid in C99 [-Wimplicit-function-declaration]

    C编译报错: implicit declaration of function xxx is invalid in C99 [-Wimplicit-function-declaration] 代码文件 ...

  2. C语言错误:expected declaration or statement at end of input、编写函数求100万以内的素数

    C语言错误:expected declaration or statement at end of input (中文:输入结尾应为声明或语句) 可能错误: 某一个函数或者变量没有在使用之前声明. 某 ...

  3. [C语言错误]expected declaration or statement at end of input)

    [C语言错误]expected declaration or statement at end of input 可能是缺少括号 可能是没有定义函数

  4. [C语言]expected declaration or statement at end of input

    C语言错误:expected declaration or statement at end of input 可能错误: 某一个函数或者变量没有在使用之前声明. 某个地方少了个括号.

  5. C语言错误:expected declaration or statement at end of input 归纳总结

    可能错误: 1. 某一个函数或者变量没有在使用之前声明. 2. 某个地方少了个括号.(并不一定是编译器指出错误的地方,这种情况,编译器一般会在最后一行代码报错,但错误很可能不在最后一行,要靠自己去找出 ...

  6. c语言致命错误解决,解决VC++编译报错error C2248的方案

    在使用诸如:CArray或是 CList等类时,经常会出现此错误 此错误的原因是由于自定义的类的数组项时 有一个操作如  Add()  在这个操作中,实际上需要一个 = 操作,但是这个 =操作在 自定 ...

  7. c语言 [Error] expected declaration or statement at end of input的解决方法

    通常情况下出现expected declaration or statement at end of input的情况,一般是因为再程序的最后少了花括号"}",再仔细检查一下代码的 ...

  8. C语言错误:expected declaration or statement at end of input

    可能错误: 某一个函数或者变量没有在使用之前声明. 某个地方少了个括号.(这个最坑)

  9. 【c语言 gcc9.1.0环境下编译报错】error: ‘true’ undeclared (first use in this function)

    问题 网上验证一个单链表是否有环的c语言demo,放到gcc9.1.0的环境下编译,发现编译报错: error: 'true' undeclared (first use in this functi ...

最新文章

  1. 体验Windows 7的Superbar
  2. ​一个文科妹子走上前端开发不归路(干货分享)
  3. .Net开发时有没有好的页面开发框架?
  4. 【Spring学习笔记】之【3.3 DI的深入 二】
  5. C语言中7除以14的答案,2015年计算机二级《C语言》精选练习题及答案(14)
  6. 【KVM系列03】KVM的I/O 全虚拟化和准虚拟化
  7. SOP,TSSOP,PLCC,BGA这些封装的中英文解释
  8. 【OS学习笔记】二十三 保护模式七:保护模式下任务的隔离与任务的特权级概念
  9. 电力系统潮流计算程序 matlab,大神们,求个电力系统潮流计算的matlab程序。
  10. js 读取excel 导入mysql_可以读取EXCEL文件的js代码
  11. fat linux 链接,FAT格式磁盘镜像制作方法
  12. c语言爱心代码(c语言画爱心的代码)
  13. 最新伯乐PHP个人在线自动发卡网源码V3.1
  14. 线性同余法生成随机数
  15. 解决word2019中求和符号上下标被强制挪到右边的问题
  16. leaflet绘制具有虚线框的多边形(125)
  17. python中flush怎么用,在Python程序中操作文件之flush()方法的使用教程
  18. SQL必知必会 - 创建表的联结
  19. [Tool]系统截图工具
  20. 傲慢与偏见之 - 轮到我们领先了

热门文章

  1. Oracle账号分享(供jdk下载使用)
  2. 航嘉电源的通病维修方法!!
  3. 那些长期喝咖啡的人,现在都怎么样了?
  4. 超详细手把手教你cordova开发使用指南+自定义插件,jsbridge
  5. C++习题:野人与修道士过河问题
  6. STM32之ADS8332
  7. 【学长带练】编程手算题
  8. Delphi 函数Shl与Shr
  9. Bias-Variance Tradeoff(方差、偏差、误差)通俗理解
  10. 计算机网络原理 [第一章] 概述