【无标题】

  • C语言概述

  • 20世纪70年代诞生于贝尔实验室(之前是汇编语言)
  1. 优点:

    1. 结构化:程序层次清晰,便于使用,维护和调试
    2. 模块化:
    3. C语言主要用于编写系统软件和应用软件。
    4. 用函数作为模块单位。--->减少重复编程,提高效率。
    5. 可移植性好
    6. 代码效率高
  2. C语言的编辑环境

    1. 编辑器:vim和Emacs
    2. 编译连接器:GCC编译器
    3. 编译过程包含词法、语法、语义的分析、中间代码的生成与优化、符号表的管理、出错处理等
    4.  调试器:GDB对代码进行调试测试的工具。
    5. 项目管理器:make

                        作用:控制编译或者重复编译代码的工具  能自动管理编译软件编译的内容、方式和时机。

  • 编辑器vim的使用

    1. 基本模式:
  1. 命令行模式(command mode) :在最下面进行对文档的操作
  2. 插入模式(insert mode) :进行字符的输入,按Esc退出
  3. 低行模式(last line mode) :以”:”开始

  1. 进入与离开:
    • 基本操作:

进入  vi 文件名  

离开 低行模式 :q(退出)

wq    :x    :zz(保存退出)

q!(强制退出不保存)

w(保存不退出)

w xx.c(保存到xx.c)

vs xx.c(分屏操作)

/字符(搜索字符)

%s/字符串1/字符串2/范围  (将1在范围内换成2)

r xx.c (将xx.c读取过来)

set number(nobumber) 设置行号

  1. 模式之间的转换:i 进入插入模式 Esc退出插入模式
  2. 剪切/删除、修改、复制:

range:范围   % 表示所有行

.  表示当前行

$  最末行

剪切: nx: 光标所在字符开始的n个字符

ncb: 剪切前n个单词

ncw: 剪切后n个单词

c$: 剪切到行尾的所有字符

ndd: 剪切n行

s: 删除光标所在字符,并进入输入模式

S: 删除光标所在行,并进入输入模式

修改: r: 修改光标所在字符,并进入输入模式

R: 从光标处进入修改模式,按Esc退出

复制: nyb: 复制前n个单词

nyw: 复制后n个单词

y$: 复制从光标处到行尾

nyy: 复制从光标行起n行

:rangey复制range内的

删除:  :ranged 删除range内的

粘贴: p: 将缓冲区的字符粘贴到光标处

撤回: u: 取消上一步操作

  1. 光标的移动:命令模式下进行

0:(数字0) 行前

$: 行尾

Ctrl+d: 向下移动半页

Ctrl+f: 向上移动半页

H: 当前屏幕第一行第一列

gg: 当前屏幕第一行第一列

M: 当前屏幕中间第一列

L: 当前屏幕最后一行第一列

b 上一个字的第一个字母

w 下一个子的第一个字母

h 向前一个字符

l 向后一个字符

k 向上移动一行

j 向下移动一行

e 下一个字的最后一个字母

^ 所在行的第一个非空白字符

n- 上移n行

n+ 下移n行

nG 移动第n行

:n 光标移动到第n行

  1. 查找、替换

查找: /<查找的字符>

?<查找的字符>

替换: :range() s/str1/str2/g(可选标志)c (替换前询问)

:10,20 s/str1/str2/    10-20行第一个str1替换为str2

:2,$-5 s/str1/str2/g  2-倒数第5行所有的str1替换str2

  • 编译器GCC的使用
  1. GCC概述:

编译流程分为4步: 预处理(pre-processing)-

gcc-E-o <目标文件><编译文件>  gcc-E-o .i .c

编译(compiling)

gcc-S-o .s .i

汇编(assembling)

gcc-c .s -o .o

链接(linking)

gcc .o -o xx

  1. gcc警告提示:对错误分别指定警告

gcc -Wall .c -o xx

  1. GCC使用函数库
    1. 函数库分为静态库(编译时链接)和共享库(运行时加载)。都安装在“/user/lib”和“/lib”目录下
    2. 共享库后缀.so如libm.so.5  m数学库.so共享库.5版本号

静态库后缀.a 如libm.a     m数学库.a静态库

    1. 指定文件夹下的库(一般是自己写的函数功能):#include</root/workplace/gcc>导入

  1. GCC代码优化

-On   n代表优化等级:0到2或者3

  • 调试器GDB的使用

使用时机: 能够编译,但是运行结果不对劲,

使用语句: gcc .c -o xx -g

gdb xx

输入l,就会出现待编译的代码,这时就能对其进行操作

    1. 基本功能及操作
  1. 设置断点: b+行号
  2. 查看断点: info b
  3. 运行代码: r 运行到断点处停止
  4. 查看变量值: p+变量名
  5. 观察变量: watch n 在n处设置了观察点
  6. 单步运行: n 下一行
  7. 程序继续运行:c 持续运行直到断点或者程序结束
  8. 退出GDB: q

    1. 设置删除断点
  1. brieak+行号 :设置断点
  2. tbreak+行号或函数名 :设置一次性断点
  3. break+filename+行号 :在文件中对应行设置断点
  4. break+<0x...> :在内存中某一位置暂停
  5. clear+行号 :清除对应行的断点
    1. 数据相关命令

display+表达式: 显示表达式的值。程序运行到断点时显示。

info display: 显示当前所有显示值的表达式的有关情况

delete display 编号: 删除要显示值的表达式

print(p)+变量或者表达式: 打印变量或者表达式的值

set+变量 = 变量值: 改变程序中变量的值

    1. 调式运行环境相关命令

set args 设置运行参数

show args 显示运行参数

set width+数目 设置GDB行宽

cd+工作目录 切换工作目录

run 程序开始执行

step(s) 单步执行(会进入到子函数中)

next(n) 单步执行(不会进入到子函数中)

finish 一直运行到函数结束返回

until+行数 运行到函数某一行

continue(c) 执行到下一个断点或程序结束

return<返回值> 直接结束当前函数,并将指定值返回

call+函数 在当前位置执行要运行的函数

    1. 堆栈相关命令

backtrace(bt) 打印栈帧指针,可以在命令后加上要打印的个数

frame 打印栈帧

info reg 查看寄存器使用情况

info stack 查看堆栈情况

up 跳到上一层函数

down 跳到下一层函数

  • make 自动编译管理器

作用:根据文件时间戳自动发现更新过的文件从而减少编译的工作量。

通过读入Makefile文件的内容执行大量编译工作,用户只需要编写一次编译语句。

  1. Makefile文件的基本结构
    1. 目标体:依赖文件

执行的命令

hello.o:hello.c hello.h

一个Tab接命令gcc-c hello.c-o hello.o

  1. Makefile变量

定义的方式:(1) VAR=var

  1. VAR: =var

使用方式:$(VAR)

常见的自动变量:

$* 不包含扩展名的目标文件名称

$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件

$< 第一个依赖文件的名称

$? 所有时间戳比目标文件晚的依赖文件,并以空格分开

$@ 目标文件的完整名称

$^ 所有不重复的依赖文件,并以空格分开

$% 如果目标是归档成员,则该变量表示目标的归档成员名称

  1. Makefile规则

所有的.o文件都可以由.c文件自动转换而来

  1. make的使用

使用方法:make <目标名>  没有目标名就运行Makefile中第一个目标

 其他命令执行项:

-C 读入指定目录下的Makefile文件

-f 读入当前目录下的file文件作为Makefile文件

-i 忽略所有的命令执行错误

-I 指定被包含的Makefile所在目录

-n 只打印要执行的命令,但不执行这些命令

-p 显示make变量数据库和隐式规则

-s 在执行命令时不显示命令

-w 如果make在执行过程中改变目录,打印当前目录名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值