0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

15行代码引发1800多行编译错误:问题排查挑战

学益得智能硬件 ? 来源:学益得智能硬件 ? 2025-02-12 11:10 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

写了 15 行代码,编译报错竟然高达 1800 多行,这种奔溃的瞬间应该有很多同学遇到过。

代码分为两块,一个头文件,一个源文件。

test.h

#ifndef TEST_H
#define TEST_H

#include 

size_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

    文章

    4905

    浏览量

    71002
  • 编译
    +关注

    关注

    0

    文章

    680

    浏览量

    34218

原文标题:写了15行代码,编译报错1800多行

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电商API常见错误排查指南:避免集成陷阱

    ? 在电商平台开发中,API集成是连接系统、实现数据交换的核心环节。然而,许多开发者在集成过程中常遇到错误,导致项目延迟、数据丢失或用户体验下降。本文将逐步介绍常见错误类型、排查方法以及预防策略
    的头像 发表于 07-11 14:21 ?173次阅读
    电商API常见<b class='flag-5'>错误</b><b class='flag-5'>排查</b>指南:避免集成陷阱

    RTsmart源码编译错误,提醒我缺少文件导致make失败,为什么?

    出现 不理解,之前都是不会出现这种错误的,怀疑是源码拉取缺少了部分文件 不仅如此,编译了YOLO的可执行文件也无法实现,提醒VICAP初始化失败超时,打不开标签文件,模型无效,我没有改过YOLO部分代码
    发表于 06-20 06:25

    使用rt-thread构建openmv的固件工程,出现编译错误的原因?

    使用rt-thread构建openmv的固件工程,用的都是示例工程,代码一点也没有改动,直接编译出现错误
    发表于 06-12 07:23

    JDK从8升级到21的问题集

    " ?sun.misc.BASE64Encoder等内部API废弃 → 引发编译错误 ?JAXB/JAX-WS从JDK核心剥离 → XML处理链断裂 ?Lombok与新版
    的头像 发表于 06-06 16:49 ?296次阅读

    打开FSP配置器界面的具体步骤

    如果目标工程项目是新建的项目,可以直接编译并通过。但是若是新导入的项目,需要先打开FSP配置界面重新生成FSP库相关代码,然后再进行编译,否则会提示编译错误。具体步骤如下。
    的头像 发表于 05-06 15:58 ?983次阅读
    打开FSP配置器界面的具体步骤

    BSP36 gcc_11.3.0编译错误的原因?怎么解决?

    在 Yocto 项目中构建 BSP36 时遇到 gcc_11.3.0 编译错误。 详细日志如下: [i]/usr/src/debug/gcc/11.3.0-r0/build/gcc
    发表于 03-27 08:19

    直流充电测试负载常见故障排查

    分信号,确认幅值在2-3V范围。某实验室曾因屏蔽层接地不良导致信号振铃,引发CRC校验错误率升高至15%。 BMS模拟失效:重点检测电池模型参数配置,验证SOC-内阻曲线设置合理性。某厂商因未更新
    发表于 03-18 12:32

    使用STM32H563遇到程序编译时显示编译错误怎么解决?

    使用STM32H563遇到程序编译时显示编译错误,原因是空间不够了,在不改变硬件的情况下有什么方法让空间变大吗
    发表于 03-13 07:34

    DLP?? NIRscan?? Nano源代码编译错误identifier is undifined怎么解决?

    我们购买了DLP NIRScan Nano EVM模块,从TI官网下载了源代码Mobile Spectroscopy TIVA EVM,编译出现了两个错误。该错误由其他工程师于201
    发表于 02-27 06:20

    什么样的代码会被编译器优化

    现在的编译器有多智能,可能你辛辛苦苦写的代码,在编译器看来就是几句废话,直接被删除掉。
    的头像 发表于 01-16 16:38 ?645次阅读

    GPIO错误排查与解决

    在嵌入式系统和微控制器编程中,通用输入输出(GPIO)是最常见的接口之一。然而,在使用GPIO时,我们可能会遇到各种错误。 1. 理解GPIO GPIO是微控制器上的一组引脚,可以被配置为输入或输出
    的头像 发表于 01-09 09:46 ?2465次阅读

    Triton编译器与GPU编程的结合应用

    Triton编译器简介 Triton编译器是一种针对并行计算优化的编译器,它能够自动将高级语言代码转换为针对特定硬件优化的低级代码。Trit
    的头像 发表于 12-25 09:13 ?882次阅读

    SQL错误代码及解决方案

    在SQL数据库开发和管理中,常见的错误代码及其解决方案可以归纳如下: 一、语法错误(Syntax Errors) 错误代码 :无特定代码,但通常会在
    的头像 发表于 11-19 10:21 ?6711次阅读

    java反编译代码可以修改么

    Java反编译是一种将编译后的Java字节码(.class文件)转换回源代码的过程。反编译后的代码可以进行修改,但是需要注意,反
    的头像 发表于 09-02 11:00 ?1366次阅读

    ida反编译出来代码能直接用吗

    IDA反编译出来的代码通常 不能直接使用 ,这主要基于以下几个方面的原因: 一、代码的不完整性 IDA反编译生成的代码可能缺少原始源
    的头像 发表于 09-02 10:55 ?1494次阅读