type
status
slug
summary
tags
category
password
date
icon

准备开发与调试环境

  1. Online,展示在线IDE的用法
      • 按下键离开终端。下方会显示几个选项:
        • Enter
        • Command Line Arguments:命令行参数,你们应该不会学到?
        • Standard Input:标准输入。你可以选择 Interactive Console(就是正常地用键盘和程序交互)或者 Text(预先准备一些文本自动输入,通常用于测试 PTA 的样例数据)。
  1. Windows下建议安装WSL,使用LINUX/macOS进行编程

程序编译过程与调试技术

C语言是一门很难的编程语言,不懂编译原理,操作系统和计算机体系结构的小白无法获得很深入的理解
现代计算机的构成部件:CPU,RAM,Hard Disk,Register……
机器语言→汇编语言→抽象程度更高的高级语言
为什么需要抽象程度更高的高级语言
  • 底层语言的可移植性比较低,需要为不同的CPU编写不同的程序
  • 代码的可读性比较差
 
程序通常是由一系列的指令组成,指令是计算机所做的某种运算的指令
  • 输入、输出
  • 基本运算
  • 测试和分支
  • 循环
💡
编写程序就是一个层层分解,把大的任务分解成小的任务,然后把小的任务在进行分解,直到最后简单到可以使用上述指令完成即可
main函数的标签一般为:
在main语句后面一定记住要写 return0
notion image
解释上面的过程:
  1. 预处理:
    1. 由c预处理器完成,它将源代码中的宏定义展开
    2. 将头文件中的内容插入到源代码中,删除注释
    3. 预处理之后的代码文件以 .i 结尾
  1. 编译:
    1. 由c编译器完成,将预处理后的文件翻译成汇编语言
    2. 编译之后所得到的汇编代码文件以 .s 为后缀
  1. 汇编:
    1. 由汇编器(Assember)完成,他将汇编代码翻译成机器语言
    2. 汇编之后所得到的代码文件以 .o 为后缀
  1. 链接:
    1. 由链接器(Linker)完成
    2. 将多个目标文件链接成一个可执行文件
 
预处理:
  • 使用双引号 #include “xx“ 包含的头文件
    • 编译器会优先在当前目录下进行查找
    • 再在系统目录下进行查找
  • 使用尖括号 #include <xx> 包含的头文件
    • 编译器只会在系统目录下进行查找
使用 -Wall-Wextra 还有 -Werror 选项将警告信息当作是错误,编译器就会停止编译
程序调试技术
🔑
Debug是一项艺术
  1. 编译时错误
    1. 语言错误
    2. 语法错误是最简单最低级的错误
  1. 运行时错误
    1. 可能会生成无限循环
    2. 区分运行时和编译时
  1. 逻辑错误和语义错误
    1. 调试时编程中最需要动脑的,最具有挑战和乐趣的部分
    2. 分模块进行突破
分析原因:
  • C语言基础知识不牢
  • 没有事先想好程序的逻辑
  • 不了解基本的调试技术和工具
最好把gdb调试全部过一遍
 
awesomeGit用法和常见问题的解决大一课程生活分享
Loading...
fufu酱
fufu酱
一个爱折腾的大学生
公告
👋
欢迎 欢迎来到fufu酱的blog! 💞️我是22级浙江大学竺可桢学院计算机科学与技术专业的学生 一个爱折腾的大学生 🌱我会在这个网站上更新我的笔记和工具分享 🌈目前all in MLLM 📫你可以用下面的方式联系到我
🍀
今後ともよろしくお願いします