预处理指令
#include 文件包含,区分""和<>的区别
#define 定义宏常量或宏函数
# 把标识符转换成字符串
## 合并标识符
#undef 删除宏
#if
#ifndef
#elif
#endif
#error 在编译期间产生错误
#warning 在编译期间产生警告
#pragma
#pragma GCC dependency 用于监控文件,防止所依赖的文件,修改后而不知道
#pragma GCC poison 用于禁用某些标识符
#pragma pack(n) 设置结构、联合的补齐和对齐的字节数
n的值必须比默认的要小
对齐边界必须是2的较小次方
#line 指定当前行的行号
库
库就是目标文件的集合,我们把不需要升级维护的代码打包合并在一起,方便使用,也可以对源代码进行保密。
静态库:
静态库使用时是把被调用的代码复制到调用模块中,然后在执行程序时,静态库就不需要了。
静态库的执行速度快。但占用空间大,当库中的内容发生变化时,需要重新编译出新的程序,因此不能轻易修改库的内容。
共享库:
只是在调用模块中嵌入代码在库的相对位置的地址,当执行程序时,共享库会和程序一起加载到内存中,当执行到调用共享库中的代码的指令时跳转到共享中执行,执行完毕后再跳转回来。
占用空间小,方便更新(共享库发生变化后程序不需要再次编译),相对于静态库,它的执行效率略低。
静态库的扩展名为.a,共享库(动态库).so
静态库
1、创建静态库
编写源代码:vi .c/