C语言在预处理的时候都做了什么呢?#define #include #if你真的会用吗?
给你总结了以下常遇到的几个问题,本质理解了如下问题你将提升一个层次。
10.1 这些机巧的预处理宏: #defifine begin { #defifine end } 你觉得怎么样?
10.2 怎么写一个一般用途的宏交换两个值?
10.3 书写多语句宏的最好方法是什么?
10.4 我第一次把一个程序分成多个源文件, 我不知道该把什么放到 .c
文件, 把什么放到 .h 文件。(“.h” 到底是什么意思?)
10.5 一个头文件可以包含另一头文件吗?
10.6 #include <> 和 #include "" 有什么区别?
10.7 完整的头文件搜索规则是怎样的?
10.8 我在文件的第一个声明就遇到奇怪的语法错误, 但是看上去没什么问题。
10.9 我包含了我使用的库函数的正确头文件, 可是连接器还是说它没有定义。
10.10 我在编译一个程序, 看起来我好像缺少需要的一个或多个头文件。谁能发给我一份?
10.11 我怎样构造比较字符串的 #if 预处理表达式?
10.12 sizeof 操作符可以用于 #if 预编译指令中吗?
10.13 我可以在 #include 行里使用 #ifdef 来定义两个不同的东西吗?
10.14 对 typdef 的类型定义有没有类似 #ifdef的东西?
10.15 我如何用 #if 表达式来判断机器是高字节在前还是低字节在前?
10.16 我得到了一些代码, 里边有太多的 #ifdef。我不想使用预处理器
把所有的 #include 和 #ifdef 都扩展开, 有什么办法只保留一种条件的代码呢?
10.17 如何列出所有的预定义标识符?
10.18 我有些旧代码, 试图用这样的宏来构造标识符 #defifine Paste(a, b)a/**/b 但是现在不行了。
10.19 为什么宏 #defifine TRACE(n) printf("TRACE: %d\n", n) 报出警
告 “用字符串常量代替宏”?它似乎应该把 TRACE(count); 扩展为 printf("TRACE: %d\count", count);
10.20 使用 # 操作符时, 我在字符串常量内使用宏参数有问题。
10.21 我想用预处理做某件事情, 但却不知道如何下手。
10.22 怎样写参数个数可变的宏?
本人近期会陆续上传这些资料和视频教程,可以关注一下一起交流:C C++ Java python linux ARM 嵌入式 物联网。