写了 15 行代码,编译报错竟然高达 1800 多行,这种奔溃的瞬间应该有很多同学遇到过。
代码分为两块,一个头文件,一个源文件。
test.h
#ifndef TEST_H #define TEST_H #includesize_tlength(constchar*s) #endif
test.c
#include "test.h" #include#include #include #include int main() { printf("%d ", length("aa")); } size_t length(const char *s) { return strlen(s); }
开始编译,当敲下回车的那一刻,瞬间有点上头,编译报错已经超出了终端的范围,一直往上翻到头也没找到编译的命令。
我尝试把错误定向到文件中,看了一下,有 1800 多行。
难怪很多初学者只需要半天时间从入门到放弃,这么多错误,根本无从下手。
先来大概分析下,提示的这些错误基本都是标准头文件里面的错误,比如 stdio.h,很显然,这是不可能的。
/usr/include/stdio.h:911:14: error: storage class specified for parameter ‘ctermid’ 911 | extern char *ctermid (char *__s) __THROW |
这个问题,一定是跟头文件有关,而且大概率是你写的头文件,影响了别人的头文件,比如函数声明的后面少了分号。
当 test.h 被展开的时候,由于函数声明后面没有加分号,导致其他被展开的头文件都不合符语法要求,头文件包含的越多,报错也就越多。如果这个时候真的去标准头文件里面找问题,基本就废了。
编译问题在C语言中应该是最简单的问题,现在的编译器足够智能,甚至能告诉你怎么修该。多写代码,遇到的多了,就能形成条件反射,看到问题,就能知道怎么修改。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
代码
+关注
关注
30文章
4986浏览量
74644 -
编译
+关注
关注
0文章
699浏览量
35404
原文标题:写了15行代码,编译报错1800多行
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
DSP编译错误的问题
我编译DSP28335工程,出现如下错误:
undefined first referenced
symbol in file
_mainC:/Program Files/Texas
发表于 05-25 10:38
Nginx 502 Bad Gateway错误的成因和排查方法
502 Bad Gateway 是 Nginx 作为反向代理服务器时最常遭遇的错误状态码。这个错误意味着 Nginx 作为网关,成功与后端 upstream 建立了连接,但后端返回了一个无效响应
Nginx日志分析命令实践和常见问题排查思路
日常运维工作中,日志分析是排查问题最直接的手段。Nginx 作为入口层代理,几乎所有请求都要经过它。当网站出现响应慢、500 错误、502 网关超时、限流失效等问题时,第一反应应该是查 Nginx
编译 MPC5775K 的外部中断时遇到的错误如何解决?
当我为MPC5775K编译外部中断程序,参考示例“示例-MPC5775K-PIT-ISR-v1_0-GHS614”,并使用S32DS PoWer2.1时,遇到了这些编译错误结果(图1)。这些错误(图
发表于 03-02 07:19
ESP_I2S库本身编译失败
你现在遇到的编译错误核心是:ESP32开发板包(2.0.9版本)自带的ESP_I2S库内部文件I2S.cpp引用了I2S.h,但该头文件缺失或路径错误,导致ESP_I2S库本身编译失败,进而整个项目
发表于 01-22 07:11
Keil编译错误汇总
1. 编译时出现Undefined symbol EXTI_Init (referred from exti.o).解决:
①检查头文件路径是否添加
②检查相对应的库是否添加。此处最容易忽略,而本人
发表于 01-21 07:40
ESP32 编译过程中 bootloader 配置阶段的 CMake 缓存冲突错误,记录
你遇到的是 ESP32 编译过程中 bootloader 配置阶段的 CMake 缓存冲突错误,核心原因是系统中混合了 ESP-IDF v5.5.1 和 v5.4.3 两个版本的路径,导致
发表于 12-23 07:07
下载模式的切换之后,会出现编译错误的解决办法
一、队伍介绍
本篇为蜂鸟E203系列分享第一篇,本篇介绍的内容是解决下载模式的切换之后出现编译错误问题。
二、问题提出
在进行下载模式切换之后,进行编译,提示如下图所示的错误:
三、问题解决
下载
发表于 10-30 08:11
使用RTOS的SDK,调整rtsmart-menuconfig出现编译错误怎么解决?
Drivers--->
4.进入Using USB--->
5.对 Using USB host 进行使能启用
6.再次编译make时出现编译错误
期待结果和实际结果
最后
发表于 07-22 07:59
电商API常见错误排查指南:避免集成陷阱
在电商平台开发中,API集成是连接系统、实现数据交换的核心环节。然而,许多开发者在集成过程中常遇到错误,导致项目延迟、数据丢失或用户体验下降。本文将逐步介绍常见错误类型、排查方法以及预防策略
编译错误: error: unrecognizable insn,不知道原因,请教!
用start_gui.exe生成的代码,再用SEGGER Embedded打开,编译有错,不知道是什么原因,请教各位大佬?
发表于 06-23 14:45
RTsmart源码编译错误,提醒我缺少文件导致make失败,为什么?
出现
不理解,之前都是不会出现这种错误的,怀疑是源码拉取缺少了部分文件
不仅如此,编译了YOLO的可执行文件也无法实现,提醒VICAP初始化失败超时,打不开标签文件,模型无效,我没有改过YOLO部分代码
发表于 06-20 06:25
手动添加cubeMX的软件自动生成代码后,编译出现’rtthread.elf’:No Such File 的错误怎么解决?
手动添加cubeMX的软件自动生成代码后,编译出现’rtthread.elf’:No Such File 的错误。
发表于 06-12 07:46
使用rt-thread构建openmv的固件工程,出现编译错误的原因?
使用rt-thread构建openmv的固件工程,用的都是示例工程,代码一点也没有改动,直接编译出现错误
发表于 06-12 07:23
15行代码引发1800多行编译错误:问题排查挑战
评论