菜鸟修炼笔记--编译--包含头文件导致的函数未声明错误

本文介绍了一种常见的编程问题:由于头文件名称冲突导致的编译错误。通过一个具体的案例,详细分析了问题的原因及解决办法,并总结了解决此类问题的一般步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译--包含头文件导致的函数未声明错误

1. 问题描述

今天在项目中包含了#include <vector>#include <iostream>时,竟然出现函数未声明的编译错误:

/home/gec/work/rv1126_rv1109_linux_201109/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/arm-linux-gnueabihf/include/c++/8.3.0/bits/basic_string.h:1930:31:
error: ‘__glibcxx_requires_string_len’ was not declared in this scope
__glibcxx_requires_string_len(__s, __n2);

2. 问题产生原因

之所以在包含这两个常用的c++头文件时出现有c++源码里面的函数出现未定义,是因为我的工程文件中新建了一个debug.h的头文件,而c++源码中同样也用到debug.h这个头文件,于是两个头文件发生冲突,导致c++源码在进行编译的时候,包含了错误的debug.h,导致函数出现未声明错误。
总的来说,问题产生的原因就是:头文件名称冲突了。

3. 解决办法

将项目中用到的debug.h改名即可解决问题。

4. 总结

下次再遇到这种情况:

1. 包含某个头文件,然后进行编译。
2. 编译出现函数未声明错误。

就可以马上联想到是不是头文件名称冲突。
然后,
直接根据编译提示去到函数未声明的地方,找到其所在的头文件,就可以知道是哪个头文件出现了名称冲突。
最后,
将其中一个头文件改名即可解决问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值