首页 > 代码库 > Makefile && GDB

Makefile && GDB

昨天学习了C++内存空间一章,看了TCP/IP第一卷第一章,最后看了《Linux网络编程》里的Makefile和gdb部分。现在靠回忆补上一篇博客。

一:C++有三种内存存储模式(C++11有4种,多了“线程存储”)

  1.自动变量

    a.auto声明变量的方式已被取消,register方式仍然保持

    b.自动变量的生存周期就是定义的位置到括号结束的位置

  2.静态变量

    a.有三种静态变量:链接性为外部,链接性为内部,没有链接性。

    b.三种对应定义方式为:定义在函数外面;定义在函数外面并加上static限定词;定义在函数内部并加上static限定词。

    c.共同性:生命周期和函数无关,程序运行期间一直存在。只被初始化一次,以后不再初始化(不是不再被赋值)

    d.差别:链接性为外部的,作用域为所有文件,所以,其它文件不能定义相同变量,只能声明使用:extern 类型 变量。如果extern 类型 变量 = 3;等同于定义,是错误的。或者只能在外部使用static修饰同名变量,以覆盖外部同名变量。链接性为内部的,作用域为文件,外部不可用extern声明使用。

  3.自由空间变量或堆

    还没看。今天看后总结。

 

Tcp/Ip:

  1.OSI 不记得

  2.IP分类法:记得方法为:

    A 0+网络号+主机号

    B 10+网络号+主机号

    C

    D

    E

Makefile:

  1.make时首先执行Makefile第一条规则!

  2.其它规则可以使用make + TARGET执行

  3.命令以Tab键开始

  4.一行写不满,使用反斜杠:‘\’

  5.规则定义:

  TARGET:DEPENDENTS(1) DEPENDENTS(2)

    GCC TARGET -o OBJ 

  6.%o:%c 将以o结尾的文件换成c结尾的(记得有问题)

  7.$@目标文件 $^依赖项以空格分开 $<依赖项第一位

  8.VPATH=path:path 将搜索目录添加进来

  9.能定义变量 OBJ=main.o sub.o

  10.等递归调用make

gdb:

  ptype:打印变量类型和整个结构

  info thread:打印线程

  thread id:进入线程

  whatis:打印变量类型

 

 

因为我现在觉得学习最重要的不是看了多少东西,而是记住了多少东西,最后是能用上多少东西。我现在看书基本是看一遍后就已经做好全部忘记的准备,所有的东西都准备花上时间重新看3遍以上,上不封顶。

Makefile && GDB