1.熟悉预处理标识符:
符号 | 含义 | 用途 |
__LINE__ | 文件当前的行号 | 调试的早期阶段,打印错误信息 |
__FILE__ | 进行编译的源文件 | |
__DATE__ | 文件被编译的日期 | 把版本的信息编译到文件中 |
__TIME__ | 文件被编译的时间 | |
__STDC__ | 编译器遵循ANSI标准,值为1 | 在必须由两种类型的编译器进行编译的源代码选择ANSI和前ANSI结构 |
#argument 由预处理器转换为字符串常量“argument”
##把两边的文本粘贴成同一个标识符
2.了解宏和函数的区别。
宏与类型无关,宏的执行速度快于函数,因为不存在函数调用返回的开销。但是,通常宏会增加程序的长度,但函数却不会。同样,具有副作用的参数可能在宏的使用过程中产生不可预料的结果。而函数的则不会。
3.写一个宏可以将一个数字的奇数位和偶数位交换。
#define CHANGE(x) \
((x & (0x55555555)) << 1)|((x &(0xaaaaaaaa))>>1)
//0x5->0101取出偶数位
//0xa->1010取出奇数位
4.理解编译链接的整个过程和详细的每个过程。
分为四步 1.预处理:在源代码编译之前的文本性质的操作->去注释、头文件展开、宏替换、条件编译
2.编译:将高级语言程序生成相应的汇编
3.汇编:将相应的汇编代码生成机器可识别的二进制代码。
4.链接:将生成.o文件捆绑在一起,形成一个单一而完整的可执行程序
链接过程