本文主要是介绍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.特殊宏
- 宏所在文件 _FILE_
- 宏所在行号 _LINE_
- 日期 _DATE_
- 时间 _TIME_
4.条件编译
//测试存在
#ifdef 标识符程序段1
#else程序段2
#endif // 标识符//测试不存在
#ifndef 标识符程序段1
#else程序段2
#endif // 标识符
作用:防止头文件被重复包含引用,例如
//宏定义不存在的时候再define
#ifdef FILE_H
#define FILE_H
程序
#endif
5.静态库优缺点:
- 对函数的链接是在编译完成的,在链接时,静态库被复制到程序中;
- 程序运行时和函数库没有关系,移植方便;
- 所有相关的文件与库函数被链接合成一个可执行文件,浪费空间和资源。
静态库函数测试:
- 创建测试项目
- 将lib库文件和头文件放入项目下
- 添加现有项,即include对应的头文件
- 使用库函数
6.动态库
把链接过程推迟到了运行时。
_declspec(dllexport)int mySub(int a,int b);
导出函数需要特殊声明,会生成一个.lib和.dll文件。
注意:
- _declspec(dllexport)意味着导出函数,导出函数可以被其他模块调用,不加这个,默认内部函数,内部函数在定义他们的dll程序内部使用
- 静态库的.lib包含函数的声明实现,动态库的.lib只有声明,实现在.dll中
动态库函数测试:
- 创建测试项目
- 将.lib .dll和头文件放入项目下,添加现有项,即include对应的头文件(或者#pragma comment(lib,"./动态库名称.lib")
- 使用库函数
这篇关于C高级编程 第十一天(宏 条件编译 静态库 动态库)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!