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。これが置換のスコープに存在しない場合、マクロが展開された後にコンパイラ エラーが発生します。実際、全体として、マクロはあまりモジュール化されていません。たとえば、 および への参照がtagありselfます。これらは属性であり、

  1. 非常に文脈的だろう
  2. それらが発生せず、マクロ展開が完了した後に特定の意味を持つ場合、コンパイルは失敗します
于 2013-03-24T08:08:46.023 に答える