嗨这是我使用的编译器的合法代码:
#use delay(clock=4M)
现在我需要用宏替换内部括号文本clock=4M
。
数字4
可以是任何数字,它应该是可修改的。
我试过这个
#define CLOCK_SPEED(x) clock=xM
但没有工作。
答案 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)