[英]How to determine the length of an array at compile time?
是否有可以在GCC編譯時返回數組長度的宏或內置函數?
例如:
int array[10];
對於:
sizeof(array) == 40
???(array) == 10
我可能只是指出在C ++中這樣做是微不足道的。 可以構建一個返回[]
內部數字的模板。 我確信,我一旦發現lengthof
和dimof
宏/在Visual C ++編譯器內建但無法找到它了。
(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,因為aligment東西可能搞亂了。
#define COUNT 10
int array[COUNT];
然后你可以根據需要使用COUNT。
sizeof(array) / sizeof(int)
我不知道這樣做的內置,但我最近使用:
的sizeof(數組)/的sizeof(數組[0])
這樣做
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.