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

#use delay(clock=4M)

现在我需要用宏替换括号内的文本clock=4M
位数4可以是任何数字,应该可以修改。
我尝试了这个
#define CLOCK_SPEED(x)        clock=xM

但没有工作。

最佳答案

您需要的是预处理器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)

关于c - 如何在C中实现宏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32189678/

10-13 03:32