0

以下宏给了我一个解析错误。看不出这里有什么问题。

 #define adjust(tag, x, y) if (self.tag==tag) { origin.x += x; origin.y += y; return origin; }

  ....

 adjust(20, 28, 265)

编辑:

查看随附的屏幕截图。我想使用宏扩展只是为了提高代码的可读性。这是一种非常本地化的用法,因此没有风险或重复使用等。

在此处输入图像描述

4

1 回答 1

2

你的宏引用了一个未定义的属性origin,如果它不存在于替换的范围内,宏扩展后会导致编译器错误。实际上,作为一个整体,您的宏并不是非常模块化。例如,您有对tagand的引用self,它们是

  1. 将非常符合上下文
  2. 宏展开完成后如果不发生且具有特定含义会导致编译失败
于 2013-03-24T08:08:46.023 回答