将角色粘贴为令牌

时间:2010-12-22 20:27:39

标签: c character token

我想知道是否可以在运行时将字符粘贴为C中的标记。像,

a = OPERATION(3, 4, '+')

将被处理,

a = 3 + 4  

有办法做到这一点吗?

修改:我想添加更多信息。显然,预处理器无法做到这一点。我想知道是否有一个简短的方法,

int i;
char sign[] = "+-*/";
for (i = 0; i < 4; i++)
  printf("%d\n", OPERATION(3, 5, sign[i]));

我知道我们可以创建一个函数,

int OPERATION(int a, int b, char c);

但这不是我要问的。

3 个答案:

答案 0 :(得分:3)

这个怎么样:

#define OPERATION( A, B, OP )   ((A) OP (B))

但是,正如下面的delnan所说,你必须将你的电话修改为:

a = OPERATION(3, 4, +)

答案 1 :(得分:1)

也许你想要这个:

#define OPERATION(a, b, op) ( \
    (op) == '+' ? (a) + (b) : \
    (op) == '-' ? (a) - (b) : \
    (op) == '*' ? (a) * (b) : \
    (op) == '/' ? (a) / (b) : 0)

答案 2 :(得分:1)

#define OPERATION(A,B,OP)     (OP=='+'?(A)+(B):OP=='-'?(A)-(B):OP=='*'?(A)*(B):OP=='/'?(A)/(B):NULL)

OPERATION(3,5,'+')返回8
OPERATION(9,2,'/')返回4
OPERATION(9,3,'*')返回27
OPERATION(3,5,'-')返回-2
OPERATION(3,5,'M')返回0