gpt4 book ai didi

c - 简单的宏导致编译错误

转载 作者:太空狗 更新时间:2023-10-29 15:55:32 25 4
gpt4 key购买 nike

我正在尝试定义一个允许我传入 2 个数字和一个运算符的宏。我想让宏对这两个数字进行指定的操作并返回结果。

我的定义是:

#define GENERAL_OP(x,y,op) ((x) op (y))

当我调用时它工作正常

int result = GENERAL_OP(1, 2, -);

但是一旦我尝试将一个字符传递给它(这是我在我的程序中实际需要做的调用宏的通用函数)如下例所示:

void Evaluate(char op)...

int result = GENERAL_OP(1, 2, op);

最佳答案

void Evaluate(char op)...

int result = GENERAL_OP(1, 2, op);

宏替换是在编译前完成的,但是Evaluate的参数只有在运行时才有,所以宏展开导致

int result = ((1) op (2));

那里,op 不是可以出现在那里的标记(可能是未声明的标识符)。

关于c - 简单的宏导致编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13071498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com