gpt4 book ai didi

c - 下面的语句中的##运算符有什么用?

转载 作者:行者123 更新时间:2023-11-30 15:22:48 25 4
gpt4 key购买 nike

#define SWAP(x, y, T) do { T temp##x##y = x; x = y; y = temp##x##y; } while (0)

我看到了这个 C 语言的交换宏。

有人可以解释一下它是如何工作的以及 temp##x##y 的使用吗?

最佳答案

它将 tempxy 连接起来,以帮助声明一个 T 类型的变量,该变量允许调换工作。

你可以像这样使用它

int a = 1;
int b = 2;

SWAP(a, b, int);

生成的代码将是

int a = 1;
int b = 2;

do {
int tempab = a;
a = b;
b = tempab;
} while (0);

它避免使用与您所看到的传递变量相同的名称,因为假设您像这样定义宏

#define SWAP(x, y, T) do { T z = x; x = y; y = z; } while (0)

然后这个

int x = 1;
int z = 2;

SWAP(z, x, int);

不会工作。

关于c - 下面的语句中的##运算符有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29039586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com