C/C++ 高频报错速查表(开发通用版)

按报错关键字 + 本质原因 + 快速修复整理,区分编译期报错、运行期崩溃、警告类问题,兼顾日常刷题、Qt、嵌入式、项目开发场景。

一、编译期报错(编译不通过,IDE 标红)

报错关键字 问题本质 修复方案
'xxx': undeclared identifier 标识符未定义:变量/函数名拼写错误、忘记头文件、作用域问题 1. 核对拼写;2. 补充 #include 头文件;3. 检查变量作用域(局部变量不能全局访问)
redefinition; multiple initialization 重复定义:头文件重复包含、全局变量重复定义 1. 头文件加保护宏 #ifndef / #define / #endif;2. 全局变量用 extern 声明,仅一处定义
cannot convert "类型A" to "类型B" 类型不匹配,赋值/传参类型错误 强制类型转换,或修改变量定义的类型
expected ';' before identifier 'xxx' 少写分号、括号不匹配、结构体末尾漏分号 检查上一行代码,补充分号/大括号/小括号
'xxx': function does not take N arguments 函数调用参数个数不匹配 对照函数声明,补全/删减调用参数
LNK2019: unresolved external symbol 链接错误:函数只有声明无实现、库未链接、名字改编冲突 1. 补全函数实现;2. 配置链接第三方库;3. C 代码在 C++ 中用 extern "C" 包裹
invalid type argument of unary '*' 解引用空指针/非指针变量 确保 * 后面是合法指针,且指针已初始化

二、运行期崩溃(编译通过,运行闪退)

报错关键字 问题本质 修复方案
段错误 Segmentation fault (core dumped) 非法内存访问:空指针解引用、数组越界、栈溢出 1. 加判断避免空指针访问;2. 严格控制数组下标;3. 大数组改用堆内存 new/malloc
free(): double free detected 重复释放同一块堆内存 释放后置空指针 ptr = nullptr,避免二次释放
heap corruption detected 堆内存越界读写、new/delete 混用(new[]delete 保证 newdeletenew[]delete[] 配对
死循环卡死 循环条件永远成立,无退出条件 增加循环终止条件,或加计数器防止无限循环
栈溢出 Stack Overflow 函数递归过深、局部超大数组 限制递归深度,大数组移到全局/堆内存

三、C++ 专属面向对象报错(类、继承、多态)

报错关键字 问题本质 修复方案
private member cannot be accessed 访问私有成员,无权限 改用公有成员函数访问,或调整访问权限
no appropriate default constructor available 无默认构造函数,成员变量/父类无无参构造 1. 手动写无参构造;2. 初始化列表调用带参构造
pure virtual function not overridden 纯虚函数未实现,抽象类被实例化 子类必须重写所有父类纯虚函数
base class is inaccessible 继承权限问题(默认私有继承) 明确继承权限 public
use of deleted function 拷贝构造/赋值运算符被禁用(=delete),或移动语义冲突 避免拷贝对象,改用引用/指针传递

四、指针与内存经典坑(C/C++ 重灾区)

报错现象 问题本质 修复方案
野指针 指针指向已释放的内存、未初始化的随机地址 指针定义即置空,释放后立即置空
内存泄漏 new/malloc 申请内存后未释放 配对使用 delete/free,C++ 优先用智能指针 unique_ptr/shared_ptr
悬垂引用 引用绑定局部变量,函数结束后变量销毁 禁止返回局部变量的引用,改用返回值/堆内存

五、万能排查流程(C/C++ 通用)

1. 编译报错 :优先看第一行报错 ,编译器会把最早出现的错误放在最前面,解决第一个后大量连锁报错会自动消失;

2. 运行崩溃 :用调试模式(Debug)打断点,定位崩溃代码行,重点排查指针、数组、递归、内存释放

3. 链接报错 LNK2019 :90% 是只有声明没有实现 ,其次是第三方库没配置链接;

4. 头文件报错 :一律加头文件保护宏,杜绝重复包含。

六、补充:头文件保护宏(必背模板)

cpp 复制代码
  
#ifndef HEADER_NAME_H
#define HEADER_NAME_H

// 头文件内容

#endif
相关推荐
Tian_Hang1 小时前
Factory Method | 工厂方法
开发语言·c++
wearegogog1231 小时前
基于MATLAB实现雷达RCS Swerling模型
开发语言·matlab
神仙别闹2 小时前
基于C语言 实现 Windows PE 文件解析
c语言·windows·microsoft
星梦清河2 小时前
Java—异步编程
java·开发语言
接着奏乐接着舞2 小时前
dto 转entity方法
java·开发语言
0x00072 小时前
译 Anders Hejlsberg 谈 C# 与 .NET
开发语言·c#·.net
czhaii2 小时前
基于51单片机的Modbus从机通信系统
开发语言·单片机
elseif1232 小时前
【C++】vector 详细版
开发语言·c++·算法
codingPower2 小时前
JAVA后端安全进阶:基于HMAC-SHA256+Nonce+Timestamp的API防重放攻击方案
java·开发语言·spring boot·安全