如何编写一个可以带参数的宏?

时间:2009-09-03 20:28:50

标签: iphone objective-c cocoa macros assert

我想使用一些NSAssert内容和其他东西来在我的应用程序中实现更好的调试。如果断言失败,NSAssert需要一个打印的字符串。很好,但是没用,除非你在那个字符串中输入一大堆信息,这在整个地方完成时会变得很麻烦。

所以我想创建一个宏,它将使用一个充满有用信息的字符串来执行NSAssert调用,例如类名,方法名和其他东西。但更重要的是,我也希望提供自定义评论。想象一下像这样的宏:

USEFUL_ASSERT(foo!= nil,@“这不好,真的是”)

由于很多原因我不能在这里使用函数或方法调用,因为上下文会丢失,我找不到哪个类导致了这个问题,哪个方法导致了这个问题。这只能在该方法本身内完成,所以我必须为[self class]和_cmd这样的信息传递很多参数,但我不希望所有这些东西分散在各处。插入的代码越短,维护就越好。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

看看macro docs

答案 1 :(得分:1)

#define USEFUL_ASSERT(condition, comment) /*whatever*/