我如何获得这样的宏定义中的元素数:

#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/

10-10 04:52