如何在宏定义中获取元素数量,如下所示:
#define myThings @"A",@"B",@"C",@"D",@"E"
从myThings获得答案5的方法是什么?
[myThings count]
不起作用......
答案 0 :(得分:1)
定义是文本的字面替换:它是否适用于像
这样的代码 [@"A", @"B", @"C" count];
?如果答案是否定的,它就不会起作用,那么这就是你的问题。你可以做到
[[NSArray arrayWithObjects: myThings, nil] count];
这应该可行,但我不建议使用这种"模式"一点都不。
添加强>
计算有多少值的另一种方法可能如下:
NSString *arr[] = {myThings};
size_t cnt = sizeof(arr)/sizeof(NSString *);
这是了解arr
中有多少元素的常用方法。我再次强调,myThings
字面取代了您使用#define
定义的任何内容,因此结果与
NSString *arr[] = {@"A", @"B", @"C", @"D", @"E"};
<强> ADD2 强>
请注意,如果您不能使用arr
&#34;进行真实&#34;,优化会删除它,并且没有&#34;浪费空间&#34 ;
但是,另一种解决方案是计算传递给宏的参数数量,以便将CountingMacro(myThings)替换为5. This SO answer在这种情况下可能有所帮助。