正如标题所示,如何根据下面的NSLog
定义包含行、类和格式的自定义NSAssert
:
#define NSLog(__FORMAT__, ...) NSLog((@"%@: " __FORMAT__), NSStringFromClass([self class]), ##__VA_ARGS__)
问题是,在考虑其他参数之前,NSAssert
首先有一个BOOL值。我似乎找不到一个解决方案,除非去掉这些参数并将它们分开。
有没有更好的方法来解决这个问题?
长话短说,我正在寻找这样的东西:
#define DebugAssert(__VA_ARGS__[0], @"%@: %@", NSStringFromClass([self class]), __VA_ARGS__[1])
发布于 2018-05-31 05:01:08
NSAssert
宏的定义如下:
#define NSAssert(condition, desc, ...) /* the implementation */
因此,该条件已经是一个独立于格式字符串和变量参数列表的参数。执行与NSLog
类似的操作应该不会有任何问题
#define MyAssert(condition, desc, ...) \
NSAssert(condition, (@"%@: " desc), NSStringFromClass([self class]), ##__VA_ARGS__)
https://stackoverflow.com/questions/50612535
复制相似问题