1

问题。 我在数组上进行了代码计算。我即将定义一个宏,用函数调用替换每个读取的数组。这是一个例子:

对于此代码:

sum += a[i];

微应该生成:

sum += function_call(a,i);

当前解决方案。 我发现我可以替换a[i]a(i)并使用以下宏:

#define a(i) function_call(a,i)

但是,我不喜欢修改原始代码。我只想添加宏。

问题。我可以通过巧妙的宏定义来实现这一点吗?任何想法都受到高度赞赏。

注意:我必须使用 C 语法。

4

1 回答 1

2

不。不管你多么聪明,C 预处理器都不会进行运算符重载。

输入中的[]字符不在括号内,因此它们不是宏参数的一部分,它们不是字母数字字符,因此它们不是宏名称的一部分。任何不是宏名称或宏参数的东西都将由预处理器传递。预处理器甚至不知道这一点,'['并且']'是一对匹配的。

于 2013-10-08T14:20:37.447 回答