C高级编程 第十一天(宏 条件编译 静态库 动态库)

目录

1.预处理指令

#include< >和#include" "的区别:

2.宏函数

3.特殊宏

4.条件编译

5.静态库优缺点

6.动态库


1.预处理指令

#include< >和#include" "的区别:

  • < >系统定义头文件
  • “  ”自定义头文件

2.宏函数

#define SUM(x,y) ((x)+(y))

void test()
{
    int ret=SUM(10,20);
}

注意:

  • 宏的名字中不能有空格
  • 要用括号,扩住每个参数,和宏的整体定义
  • 大写字母表示宏的函数名

3.特殊宏

  1. 宏所在文件         _FILE_
  2. 宏所在行号         _LINE_
  3. 日期        _DATE_
  4. 时间        _TIME_

4.条件编译

//测试存在
#ifdef 标识符
	程序段1
#else
	程序段2
#endif // 标识符

//测试不存在
#ifndef 标识符
	程序段1
#else
	程序段2
#endif // 标识符

作用:防止头文件被重复包含引用,例如

//宏定义不存在的时候再define
#ifdef FILE_H
#define FILE_H
程序
#endif

5.静态库优缺点:

  1. 对函数的链接是在编译完成的,在链接时,静态库被复制到程序中;
  2. 程序运行时和函数库没有关系,移植方便;
  3. 所有相关的文件与库函数被链接合成一个可执行文件,浪费空间和资源。

静态库函数测试:

  1. 创建测试项目
  2. 将lib库文件和头文件放入项目下
  3. 添加现有项,即include对应的头文件
  4. 使用库函数

6.动态库

把链接过程推迟到了运行时。

_declspec(dllexport)int mySub(int a,int b);

导出函数需要特殊声明,会生成一个.lib和.dll文件。 

注意:

  1. _declspec(dllexport)意味着导出函数,导出函数可以被其他模块调用,不加这个,默认内部函数,内部函数在定义他们的dll程序内部使用
  2. 静态库的.lib包含函数的声明实现,动态库的.lib只有声明,实现在.dll中

动态库函数测试:

  1. 创建测试项目
  2. 将.lib .dll和头文件放入项目下,添加现有项,即include对应的头文件(或者#pragma comment(lib,"./动态库名称.lib")
  3. 使用库函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值