10.1 我正在尝试定义一些简单的类函数宏,例如
#define square(x) x * x但它们并不总是有效。
10.2 这里有一些漂亮的预处理器宏
#define begin { #define end }有了它们,我就可以编写更像 Pascal 的 C 代码。你们觉得怎么样?
10.3 如何编写一个通用的宏来交换两个值?
10.4 编写多语句宏的最佳方法是什么?
10.5 使用typedef和#define定义用户自定义类型有什么区别?
10.5b 之间有什么区别?
const MAXSIZE = 100;
and
#define MAXSIZE 100
10.6 我第一次将程序分成多个源文件,我想知道该在.c文件中放入什么,又该在.h文件中放入什么。(“.h” 到底是什么意思?)
10.7 一个头文件包含另一个头文件是否可以接受?#include另一个?
10.8a 之间有什么区别?#include <>和#include "" ?
10.8b 头文件搜索的完整规则是什么?
10.9 我在文件的第一个声明处遇到了奇怪的语法错误,但它看起来是正确的。
10.10 我正在使用附带两个不同第三方库的头文件,它们“好心”地定义了一些通用宏,例如TRUE, FALSE, Min(),而Max(),但它们的定义相互冲突,也与我自己在头文件中已建立的定义冲突。我该怎么办?
10.10b 我正在 #include 我使用的库函数的正确头文件,但是链接器一直说它是未定义的。
10.11 我在编译一个程序,似乎缺少它所需要的一个头文件。有人能发一份给我吗?
10.12 如何构造预处理器#if表达式来比较字符串?
10.13 呢?sizeof运算符在预处理器#if指令中是否有效?
10.14 我可以在#ifdef中#define一行使用,像这样以两种不同的方式定义东西?
#define a b \ #ifdef whatever c d #else e f g #endif
10.15 有没有什么像#ifdef对于typedef有什么区别?
10.16 呢?如何使用预处理器#if表达式来判断机器的字节顺序是大端还是小端?
10.17 我在已被我#ifdef过的行里遇到了奇怪的语法错误。
10.18 过的行内遇到了奇怪的语法错误。我继承了一些代码,其中包含我所不喜欢的过多的#ifdef's。如何在不运行预处理器并展开所有#include's 和#define's 的情况下,将代码预处理以仅留下一个条件编译集?
10.19 如何列出所有预定义的标识符?
10.20 我有一些旧代码试图用像
#define Paste(a, b) a/**/b这样的宏来构造标识符,但它不再起作用了。
10.21 我有一个旧的宏
#define CTRL(c) ('c' & 037),它似乎不再起作用了。
10.22 为什么宏
#define TRACE(n) printf("TRACE: %d\n", n)会给我一个警告“字符串字面量中的宏替换”?它似乎正在扩展
TRACE(count);为
printf("TRACE: %d\count", count);
10.23 呢?如何在宏展开的字符串字面量中使用宏参数?
10.24 我正在尝试使用 ANSI 的“字符串化”预处理器运算符`#' 来将符号常量的值插入到消息中,但它总是字符串化宏的名称而不是它的值。
10.25 我有一些棘手的预处理想做,但我找不到方法。
10.26 如何编写一个接受可变数量参数的宏,或者使用预处理器来“关闭”一个具有可变数量参数的函数调用?
10.27 如何在通用调试宏中包含__FILE__和__LINE__宏的展开?