下面的宏給我一個解析錯誤。不能看到這裏有什麼錯。目標c宏不工作
#define adjust(tag, x, y) if (self.tag==tag) { origin.x += x; origin.y += y; return origin; }
....
adjust(20, 28, 265)
編輯:
非常感謝您的幫助迄今。看附件截圖。我想使用宏擴展來提高代碼的可讀性。它是一種非常本地使用,因此無風險或重用等
下面的宏給我一個解析錯誤。不能看到這裏有什麼錯。目標c宏不工作
#define adjust(tag, x, y) if (self.tag==tag) { origin.x += x; origin.y += y; return origin; }
....
adjust(20, 28, 265)
編輯:
非常感謝您的幫助迄今。看附件截圖。我想使用宏擴展來提高代碼的可讀性。它是一種非常本地使用,因此無風險或重用等
您的宏引用了未定義的屬性origin
,這如果不更換的範圍存在,會導致編譯器錯誤在宏觀擴大之後。實際上,總體來說,你的宏不是很模塊化的。例如,你必須tag
和self
引用,這是屬性,這些屬性
+1喜歡的解釋 – 2013-03-24 08:18:28
我同意宏不是模塊化的。然而,編譯器錯誤的實際原因是'self.tag'到'self.20'的不必要的擴展,而不是未定義的屬性'origin',請參閱我對該問題的評論。 – 2013-03-24 10:16:59
@MartinR - 是的,我同意。如果有的話,在我發佈我的答案之後對***問題進行的編輯說明了這種本地範圍的宏的危險。 – Perception 2013-03-24 10:35:43
是源自結構?或者這是Rect的一部分? – 2013-03-24 08:08:08
什麼是錯誤? – 2013-03-24 08:08:47
問題是'if(self.tag == tag)'展開爲'if(self.20 == 20)',比較重複問題以獲得可能的解決方案。 – 2013-03-24 09:05:21