簡體   English   中英

如何在編譯時確定數組的長度?

[英]How to determine the length of an array at compile time?

是否有可以在GCC編譯時返回數組長度的宏或內置函數?

例如:

int array[10];

對於:

sizeof(array) == 40
???(array) == 10

Update0

我可能只是指出在C ++中這樣做是微不足道的。 可以構建一個返回[]內部數字的模板。 我確信,我一旦發現lengthofdimof宏/在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM