如何在C中实现宏

时间:2015-08-24 18:56:41

标签: c

嗨这是我使用的编译器的合法代码:

#use delay(clock=4M)

现在我需要用宏替换内部括号文本clock=4M。 数字4可以是任何数字,它应该是可修改的。 我试过这个

#define CLOCK_SPEED(x)        clock=xM

但没有工作。

1 个答案:

答案 0 :(得分:13)

您想要的是预处理器concatenation operator##

#define CLOCK(x) clock=x##M

void some_function() {
        CLOCK(4);
}

结果:

tmp$ cpp -P test.c 
void some_function() {
 clock=4M;
}

另一方面,像这样的宏通常是难以发现的错误的原因。它是usually recommended to write them like this

#define CLOCK(x) do { clock=x##M; } while(0)