如何在编译时确定数组的长度?
是否有可以在GCC编译时返回数组长度的宏或内置函数?
例如:
int array[10];
对于:
sizeof(array) == 40 ???(array) == 10
Update0
我可能只是指出在C ++中这样做是微不足道的。 可以构建一个返回[]
内部数字的模板。 我确信我曾经在Visual C ++编译器中找到了一个dimof
和dimof
宏/内置,但是再也找不到它了。
(sizeof(array)/sizeof(array[0]))
或者作为一个宏
#define ARRAY_SIZE(foo) (sizeof(foo)/sizeof(foo[0])) int array[10]; printf("%d %d\n", sizeof(array), ARRAY_SIZE(array)); 40 10
警告:您可以将此ARRAY_SIZE()
宏应用于指向数组的指针,并获取垃圾值而不会出现任何编译器警告或错误。
sizeof(array)/ sizeof(int)
我不会依赖sizeof,因为aligment东西可能会弄乱这个东西。
#define COUNT 10 int array[COUNT];
然后你可以根据需要使用COUNT。
我不知道这样做的内置,但我最近使用:
的sizeof(数组)/的sizeof(数组[0])
做到这一点