我如何获得这样的宏定义中的元素数:
#define myThings @"A",@"B",@"C",@"D",@"E"
从myThings获得答案5的方法是什么?
[myThings count]
不起作用... 最佳答案
定义是文字的文字替换:它会像
[@"A", @"B", @"C" count];
?如果答案是否定的,那将是行不通的,这是您的问题。你可以做
[[NSArray arrayWithObjects: myThings, nil] count];
这应该可行,但是我完全不建议使用此“模式”。
加
计算有多少个值的另一种方法是:
NSString *arr[] = {myThings};
size_t cnt = sizeof(arr)/sizeof(NSString *);
这是了解
arr
中有多少个元素的C语言常用方法。同样,我强调一个事实,即myThings
实际上是由您使用#define
定义的内容替换的,因此结果与 NSString *arr[] = {@"A", @"B", @"C", @"D", @"E"};
添加2
请注意,如果您不使用
arr
“真正”,则优化将删除它,并且没有“浪费空间”。但是,另一种解决方案是对传递给宏的参数数量进行计数,以便将CountingMacro(myThings)替换为5。在这种情况下,This SO answer可能会有所帮助。
关于objective-c - 如何计算#define中的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10573836/