如何获取宏定义中的元素数量,如下所示:
#define myThings @"A",@"B",@"C",@"D",@"E"
从 myThings 获得答案 5 的方法是什么?
[myThings count]
不工作...
如何获取宏定义中的元素数量,如下所示:
#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 *);
这是一种 C 常用的方法来了解 .c 中有多少元素arr
。再一次,我强调一个事实,myThings
它实际上被你定义的任何东西所取代#define
,所以结果是一样的
NSString *arr[] = {@"A", @"B", @"C", @"D", @"E"};
添加2
请注意,如果您不使用arr
“真正”,优化将删除它,并且不会“浪费空间”。
但是,另一种解决方案是计算传递给宏的参数数量,以便将 CountingMacro(myThings) 替换为 5。这个 SO 答案在这种情况下可能会有所帮助。