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文件捆绑在一起,形成一个单一而完整的可执行程序
链接过程
本文介绍了C语言预处理标识符的基本概念,如__LINE__、__FILE__等,并对比了宏与函数的区别。此外,还提供了一个用于交换数字奇偶位的宏示例,并详细解释了从源代码到可执行程序的整个编译链接流程。
1597

被折叠的 条评论
为什么被折叠?



