我正在编写一堆相关的预处理器宏,其中一个生成另一个跳转到的标签.我以这种方式使用它们:
MAKE_FUNNY_JUMPING_LOOP(
MAKE_LABEL();
MAKE_LABEL();
)
Run Code Online (Sandbox Code Playgroud)
我需要一些方法来生成唯一标签,每个内部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
...
)
Run Code Online (Sandbox Code Playgroud)
有没有办法用预处理器生成哈希值或自动递增整数?
我正在尝试定义一个宏来生成一个包含变量的令牌名称.
基本上,我正在尝试的是:
#define GLUER(x,y,z) x##y##z
#define PxDIR(x) GLUER(P,x,DIR)
int main() {
int port;
port = 2;
PxDIR(port) |= 0x01;
}
Run Code Online (Sandbox Code Playgroud)
我希望在上面的语句中生成令牌P2DIR,但根据我的编译器输出,它生成令牌PportDIR,这不是我想要的.这里有什么帮助?或者我正在尝试做什么不可能?