C语言 如何在编译时找出初始化列表中的条目数?

z0qdvdin  于 2023-01-29  发布在  其他
关注(0)|答案(1)|浏览(131)

下面的代码:

#define DEF1 "first"
#define DEF2 "second"
#define INIT_LIST { DEF1, DEF2 }

有什么方法可以在编译时获得INIT_LIST中的条目数吗?

jmo0nnb3

jmo0nnb31#

你可以把一个未知大小的字符指针数组作为一个复合字面值传递给sizeof,然后除以sizeof字符指针,得到INIT_LIST中的元素个数。
喜欢

#define INIT_LIST_ELEMENTS (sizeof((char*[])INIT_LIST) / sizeof(char*))

相关问题