我正在编写一堆相关的预处理器宏,其中一个生成标签,另一个宏则跳转到该标签。我以这种方式使用它们:
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
...
)
有没有办法使用预处理器生成哈希或自动递增整数?
如果您使用 GCC 或 MSVC,则有__COUNTER__.
除此之外,你还可以做一些令人呕吐的事情,比如:
#ifndef USED_1
#define USED_1
1
#else
#ifndef USED_2
#define USED_2
2
/* many many more */
#endif
#endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)