type
status
slug
summary
tags
category
password
date
icon
准备开发与调试环境
- Online,展示在线IDE的用法
- 打开这个网址:www.onlinegdb.com
- 按下键离开终端。下方会显示几个选项:
- Command Line Arguments:命令行参数,你们应该不会学到?
- Standard Input:标准输入。你可以选择 Interactive Console(就是正常地用键盘和程序交互)或者 Text(预先准备一些文本自动输入,通常用于测试 PTA 的样例数据)。
Enter
- Windows下建议安装WSL,使用LINUX/macOS进行编程
程序编译过程与调试技术
C语言是一门很难的编程语言,不懂编译原理,操作系统和计算机体系结构的小白无法获得很深入的理解
现代计算机的构成部件:CPU,RAM,Hard Disk,Register……
机器语言→汇编语言→抽象程度更高的高级语言
为什么需要抽象程度更高的高级语言
- 底层语言的可移植性比较低,需要为不同的CPU编写不同的程序
- 代码的可读性比较差
程序通常是由一系列的指令组成,指令是计算机所做的某种运算的指令
- 输入、输出
- 基本运算
- 测试和分支
- 循环
编写程序就是一个层层分解,把大的任务分解成小的任务,然后把小的任务在进行分解,直到最后简单到可以使用上述指令完成即可
main函数的标签一般为:
在main语句后面一定记住要写
return0
解释上面的过程:
- 预处理:
- 由c预处理器完成,它将源代码中的宏定义展开
- 将头文件中的内容插入到源代码中,删除注释
- 预处理之后的代码文件以
.i
结尾
- 编译:
- 由c编译器完成,将预处理后的文件翻译成汇编语言
- 编译之后所得到的汇编代码文件以
.s
为后缀
- 汇编:
- 由汇编器(Assember)完成,他将汇编代码翻译成机器语言
- 汇编之后所得到的代码文件以
.o
为后缀
- 链接:
- 由链接器(Linker)完成
- 将多个目标文件链接成一个可执行文件
预处理:
- 使用双引号
#include “xx“
包含的头文件 - 编译器会优先在当前目录下进行查找
- 再在系统目录下进行查找
- 使用尖括号
#include <xx>
包含的头文件 - 编译器只会在系统目录下进行查找
使用
-Wall
和 -Wextra
还有 -Werror
选项将警告信息当作是错误,编译器就会停止编译程序调试技术
Debug是一项艺术
- 编译时错误
- 语言错误
- 语法错误是最简单最低级的错误
- 运行时错误
- 可能会生成无限循环
- 区分运行时和编译时
- 逻辑错误和语义错误
- 调试时编程中最需要动脑的,最具有挑战和乐趣的部分
- 分模块进行突破
分析原因:
- C语言基础知识不牢
- 没有事先想好程序的逻辑
- 不了解基本的调试技术和工具
最好把gdb调试全部过一遍
- 作者:fufu酱
- 链接:https://csfufu.life/article/94adcc4b-cfda-450c-a12b-a8b97989f8a9
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章