gpt4 book ai didi

macros - 如何在 C 预处理器中生成唯一值?

转载 作者:行者123 更新时间:2023-12-03 13:40:40 25 4
gpt4 key购买 nike

我正在编写一堆相关的预处理器宏,其中一个生成标签,另一个跳转到。我以这种方式使用它们:

MAKE_FUNNY_JUMPING_LOOP(
MAKE_LABEL();
MAKE_LABEL();
)

我需要一些方法来生成唯一的标签,每个内部都有一个 MAKE_LABEL调用,使用预处理器。我试过使用 __LINE__ , 但既然我调用 MAKE_LABEL在另一个宏中,它们都具有相同的行并且标签会发生冲突。

我希望这个扩展到是这样的:
MAKE_FUNNY_JUMPING_LOOP(
my_cool_label_1: // from first inner macro
...
my_cool_label_2: // from second inner macro
...
)

有没有办法用预处理器生成散列或自动递增整数?

最佳答案

我用这个:

#define MERGE_(a,b)  a##b
#define LABEL_(a) MERGE_(unique_name_, a)
#define UNIQUE_NAME LABEL_(__LINE__)

int main()
{
int UNIQUE_NAME = 1;
return 0;
}

...并获得以下信息:
int main()
{
int unique_name_8 = 1;
return 0;
}

关于macros - 如何在 C 预处理器中生成唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1132751/

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