宏定义
只在宏定义的文件中起作用,“宏”分为:无参数的宏和有参数的宏
说明:
1) 宏名一般用大写,以便于与变量区别
2) 字符串可以是常数、表达式等
3) 宏定义不作语法检查,只有在编译被宏展开后的源程序才会报错
4) 宏定义不是C语言,不在行末加分号
5) 宏名有效范围为从定义到本源文件结束
6) 可以用#undef命令终止宏定义的作用域
7) 在宏定义中,可以引用已定义的宏名
C++中 #define & const
C++中的const常量类似于宏定义
const int c = 5; ≈ #define c 5
C++中的const常量与宏定义不同
const常量是由编译器处理的,提供类型检查和作用域检查
宏定义由预处理器处理,单纯的文本替换
C语言中 #define & typedef
- #define发生在预处理,typedef发生在编译阶段
- 与#define不同,typedef仅限于数据类型,而不是能是表达式或具体的值
动态库、静态库
windows 动态库是dll文件和lib文件组合。
xxx.lib:编译代码时,需要链接此文件
xxx.dll:运行程序时,需要链接此文件
当发现windows动态库没有lib文件生成时候,需要在动态库中每个函数头部添加头衔。__declspec(dllexport)