11.2 怎么写一个一般用途的宏交换两个值?

对于这个问题没有什么好的答案。如果这两个值是整数, 可以使用异或的技术, 但是这对浮点值或指针却不行, 对同一个值也无能为力。 (参见问题 3.4 和 20.14。) 如果希望这个宏用于任何类型 (通常的目标), 那么它不能使用临时变量, 因为不知道需要什么类型的临时变量 (即使知道也难以找出一个名字), 而且标准 C 也没有提供 typeof 操作符。

最好的全面解决方案可能就是忘掉宏这回事, 除非你还准备把类型作为 第三个参数传入。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)