# C

C 语言是一个有结构化程序设计、具有变量作用域(variable scope 页面存档备份,存于互联网档案馆)以及递归功能的过程式语言。

# 编译

编写一个函数:

// test.c
int sum(int a, int b)
{
  return (a + b);
}

编译:

clang -g -c test.c

生成静态库:

libtool -static -o libtestlib.a test.o

编写头文件:

// test.h
int sum(int a, int b);

编写调用的函数:

// sum.c
#include <stdio.h>
#include "test.h"

int main(int argc, char *argv[])
{
  int ret = sum(3, 5);

  printf("ret: %d", ret);

  return 0;
}

编译:

clang -g -O2 -o sum sum.c -I . -L . -l testlib
  • -g: 输出文件中的调试信息,没有则无法调试
  • -O: 对输出文件做指令优化
  • -o: 输出文件
  • -I: 指定头文件
  • -L: 指定库文件地址
  • -l: 指定使用哪个库

执行:

./sum

# 调试

命令 gdb(Linux) lldb(Mac)
设置断点 b b
运行程序 r r
单步执行 n n
跳入函数 s s
跳出函数 finish finish
打印内容 p p