gpt4 book ai didi

c-preprocessor - #define woes – 不是的宏

转载 作者:行者123 更新时间:2023-12-01 09:06:36 28 4
gpt4 key购买 nike

我正在尝试做类似的事情:

#define __attribute__((aligned(2))) __attribute__((space(prog),aligned(2)))

但编译器会产生:

 error: "(" may not appear in macro parameter list

问题:什么给了?如何进行文字文本替换,没有花哨,没有多余的装饰?

最佳答案

只要您从括号开始,您就定义了一个带有参数的宏,这受一些规则的约束。

所以你可以这样做,例如:

#define succ(x) (x + 1)

但你不能这样做:

#define pred(x + 1) x

预处理器只进行非常有限的一组模式匹配。

可以做的事情是这样的:

#define __aligned2__ __attribute__((space(prog),aligned(2)))

并改用该定义。如果这不足以满足您的需求,您需要使用 sed 进行一些自定义预处理。

关于c-preprocessor - #define woes – 不是的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710625/

28 4 0