我正在尝试定义一个列表,其中包括我们设备的MAC地址。我想用一个宏来做。这是我定义的列表的示例:
"match_parent"
定义列表后,我想像列和行一样收集其大小。最简单的方法是什么? 您也可以建议我一种定义列表的新方法。该代码将在嵌入式系统上工作。因此,它不应该使用繁琐的算法:)
答案 0 :(得分:6)
假设总是有六列,则可以在复合文字中使用上述初始化程序进行计算。
#define WHITELIST_DEVICE_LENGTH ( sizeof ((int[][6])WHITELIST_DEVICE) / sizeof ((int[][6])WHITELIST_DEVICE[0]) )
或
#define WHITELIST_DEVICE_LENGTH ( sizeof ((int[][6])WHITELIST_DEVICE) / sizeof (int[6]) /* a "row" */ )
(int[][6])WHITELIST_DEVICE
-通常会在它出现的范围内创建一个匿名对象。但是当文字是sizeof
(表达式变体)的操作数时,它将不会创建任何对象,而是仅进行计算编译过程中有问题的类型。
获取数组大小的sizeof
技巧无需解释,我希望。这也使得选择int
作为数组元素并不重要,因为该大小将在除法过程中被抵消。我选择了这种类型,以避免您的文字数字不适合数组元素的任何潜在问题。