【发布时间】:2011-04-28 07:06:23
【问题描述】:
大家好,
我试图在 C 中编写通用交换宏时遇到问题,我的宏如下所示:
#define swap(x,y) { x = x + y; y = x - y; x = x - y; }
它适用于整数和浮点数,但我不确定其中是否有任何问题。如果通用宏是指交换指针、字符等怎么办?谁能帮我写一个通用宏来交换每个输入?
谢谢
【问题讨论】:
-
由于整数溢出问题,它无法工作。 Paul R 的答案看起来像你想要的。
-
这不适用于所有花车。想象一下
float x = 1e9; float y = 1.0f;。此外,没有为指针定义加法。 -
为什么不只是带有临时变量的普通代码呢?我很确定临时变量代码即使不是更快也至少是一样快。
-
@CodeInChaos:因为它是一个宏而不是一个实际的模板,所以他不知道该临时变量是什么类型。
-
虽然这可能确实与stackoverflow.com/questions/2637856/… 密切相关,但我个人认为它不符合重复的条件 - 我已投票重新开放,尤其是到目前为止的答案和讨论非常有见地.
标签: c function macros generics