我試圖節省一些時間/使我的代碼可讀。我有很多返回BOOL的'isXXX'消息。我不斷地添加更多「正在」消息。是否有可能通過列表在預編譯時創建一個可擴展的宏。預編譯可擴展宏
我想指定: isMacro(1,2,3)。
和每個那些,我想宏將其擴展成一個完整的 - (BOOL)IS1 {...} - (BOOL)IS2 ...
看起來這將是一個很好地使用預編譯器宏擴展,但我不確定如何實現isMacro(...)部分。 (具體來說,......在編譯之前擴展爲全部函數)。
---更新:
的「是」方法都是動態計算,但他們都是常見的。
我測試一個變量對枚舉值並確定它是否相等。我不能將它們合成,因爲它是動態的。爲了方便起見,我將它們全部放在@property中。我只想要類似@synthesize的東西,我可以列出所有這些東西,併爲每個isXXX方法創建一個動態響應。
此外,我不想運行isCheck:(opMode)模式,因爲沒有預編譯檢查以確保它是有效的枚舉值。
所有的功能都是以下格式:
-(BOOL) isTurtle { return operationMode == Turtle; }
關鍵是我希望它作爲一個屬性爲簡單起作用。因此,我不想要的是:(opMode)模式,我必須指定BOOL res = [obj is:Tutle];
這是用於C++,Objective-C還是C?你已經在這裏標記了所有三種語言。 – templatetypedef
你究竟想做什麼? ' - (BOOL)is1 {...}, - (BOOL)is2 ...'是無效的C代碼,那麼爲什麼你需要一個宏來評估呢? –
@David:實際上,你在Objective-C中。如果您使用的是語言,請標記該語言。不要標記其他語言,因爲你猜它可能適用於他們。 – Puppy