C语言中常见的编译报错及调试方法

1、头文件报错

预处理阶段出现   通常为头文件路径错误或文件名写错导致的。(以hello.c这个文件为例)

报错时出现的提示:

hello.c:5:19: fatal error: inc/a.h: 没有那个文件或目录
compilation terminated.

2、语法错误 

在编译阶段出现 ,通常为标点符号或中文问题 。

报错时出现的提示:

语法错误:

未定义变量r:

数据类型错误,注意检查 

hello.c: In function ‘main’:
hello.c:10:2: error: expected ‘;’ before ‘func’
  func();
  ^

中文符号:

hello.c: In function ‘main’:
hello.c:9:2: error: stray ‘\357’ in program
  printf("PI=%.2f\n", PI);
  ^
hello.c:9:2: error: stray ‘\274’ in program
hello.c:9:2: error: stray ‘\233’ in program
hello.c:10:2: error: expected ‘;’ before ‘func’
  func();
  ^

 3、未定义标识符

3. 未定义标识符    变量/函数没有定义或声明就使用  

报错时出现的提示:

hello.c: In function ‘main’:
hello.c:12:19: error: ‘pelpe’ undeclared (first use in this function)
  printf("%.2d\n", pelpe);
                   ^
hello.c:12:19: note: each undeclared identifier is reported only once for each function it appears in
 

 4、归档错误 及连接错误

 归档错误 及连接错误引用了其他文件或库中的函数 而没有声明 或 函数名字错误 
/tmp/cclYp5VM.o:在函数‘main’中:
hello.c:(.text+0x42):对‘func’未定义的引用
collect2: error: ld returned 1 exit status

5、逻辑错误 

 bug  程序可以运行 但 没有达到预期效果甚至出现错误

解决方法:对于出现的错误第一条到第四条,可以对症下药,vim 进入文件针对不同的错误,查找报错的原因,并且改正。针对第五个出现bug的现象,有以下两种可以尝试解决的方法。

 1、 printf()打印法,可以对一些位置的变量进行值输出,进而查找出bug

2、GDB 调试器: 软件调试工具,字符界面调试功能 ;

使用:

1. 编译时添加-g 选择  附加调试信息    (示例文件 shuzu.c)
    gcc shuzu.c -g -o gdb.out

 -g使用gbd调试                  -o :将文件名改为gbd。out

2.     使用gdb运行调试程序 
    gdb gdb.out


 

 进入调试后通过以下的指令进行调试:

gdb 命令   
    l  查看程序源码  
    设置断点    断点: 程序 运行到这里就会暂停 
    b 行号  
    info b  查看所有的断点 
    
    运行代码
    r 
    查看程序中变量的值 
    
    单步运行:   一次执行一行C代码  
    (gdb) n     运行一行
    (gdb) s      若这一行是函数调用,s则进入函数
    恢复程序运行 
    (gdb) c
    
    删除断点 
    del  1   删除断点1 
    
    quit  退出gdb  

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好!关于 VSCode C 语言头文件报错的问题,可能有几种可能的原因和解决方案。以下是一些建议供参考: 1. 检查头文件路径:确保你正确地包含了需要的头文件路径。可以使用 `#include` 指令来包含头文件,例如 `#include <stdio.h>`。如果你使用的是自定义的头文件,要确保正确指定了路径,例如 `#include "myheader.h"`。 2. 配置编译器路径:如果你使用的是 GCC 或者 Clang 编译器,需要在 VSCode 的配置文件正确设置编译器路径。可以在 VSCode 的设置搜索 "C_CPP: Intelli Sense Engine",选择对应的编译器,并在 "C_CPP: Intelli Sense Engine Path" 指定编译器的路径。 3. 安装 C/C++ 扩展:确保已经在 VSCode 安装了 C/C++ 扩展。可以在扩展商店搜索 "C/C++" 并安装它。该扩展提供了语法高亮、代码补全和调试等功能。 4. 重新生成编译数据库:如果你的项目使用了 CMake 或者其他构建系统,可以尝试重新生成编译数据库。在 VSCode 打开终端,并在项目根目录下执行构建命令,例如 `cmake .`。然后重新打开项目,看看问题是否解决。 5. 检查代码错误:如果头文件报错是因为代码存在语法或逻辑错误,需要检查代码并修复错误。VSCode 通常会在编辑器显示错误和警告,可以根据提示进行修改。 希望以上建议对你有帮助!如果问题仍然存在,请提供更多细节,我将尽力提供帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值