Mat*_*ner 4 c arrays gcc compile-time
是否有可以在GCC编译时返回数组长度的宏或内置函数?
例如:
int array[10];
Run Code Online (Sandbox Code Playgroud)
对于:
sizeof(array) == 40
???(array) == 10
Run Code Online (Sandbox Code Playgroud)
我可能只是指出在C++中这样做是微不足道的.可以构建一个返回内部数字的模板[].我确信,我一旦发现lengthof和dimof宏/内置在Visual C++编译器,但无法找到它了.
ndi*_*dim 12
(sizeof(array)/sizeof(array[0]))
Run Code Online (Sandbox Code Playgroud)
或者作为一个宏
#define ARRAY_SIZE(foo) (sizeof(foo)/sizeof(foo[0]))
int array[10];
printf("%d %d\n", sizeof(array), ARRAY_SIZE(array));
40 10
Run Code Online (Sandbox Code Playgroud)
警告:您可以将此ARRAY_SIZE()宏应用于指向数组的指针,并获取垃圾值,而不会出现任何编译器警告或错误.