Joh*_*n K 3 c macros compiler-errors
我正在尝试定义一个宏,它允许我传入2个数字以及一个运算符.我希望宏对两个数字执行指定的操作并返回结果.
我的定义是:
#define GENERAL_OP(x,y,op) ((x) op (y))
Run Code Online (Sandbox Code Playgroud)
我打电话时工作正常
int result = GENERAL_OP(1, 2, -);
Run Code Online (Sandbox Code Playgroud)
但是一旦我尝试传递一个字符(这是我在调用宏的通用函数中实际需要做的事情),如下例所示:
void Evaluate(char op)...
int result = GENERAL_OP(1, 2, op);
Run Code Online (Sandbox Code Playgroud)
void Evaluate(char op)...
int result = GENERAL_OP(1, 2, op);
Run Code Online (Sandbox Code Playgroud)
宏替换在编译时完成,但参数Evaluate仅在运行时可用,因此宏扩展会导致
int result = ((1) op (2));
Run Code Online (Sandbox Code Playgroud)
在那里,op并不是可以出现在那里的令牌(可能是未声明的标识符).