據說是來自chrome的代碼里的一個模板
char (&ArraySizeHelper(T (&array)[N]))[N];
#define arraysize(array) (sizeof(ArraySizeHelper(array)))
然后使用這個arraysize宏就可以在編譯時求出數組的大小
初看這段代碼,我表示很糾結,發給同學討論了下,然后表示有點眉目了,其實這就是一個編譯時求數組大小的一個寫法,當然我們也可以寫成
可以自己寫個小程序測試一下:
2 #include <stdio.h>
3 #include <stdlib.h>
4
5 template <typename T, size_t N>
6 char (&ArraySizeHelper(T (&array)[N]))[N];
7 #define arraysize(array) (sizeof(ArraySizeHelper(array)))
8
9 int _tmain(int argc, _TCHAR* argv[])
10 {
11
12 double a[200];
13
14 double* b = new double [100];
15 int cnt = arraysize(a);
16 printf("%d\n",cnt);
17
18 system("pause");
19
20 return 0;
21 }
某位朋友給的網址,將這個問題說的比較透徹,有興趣大家可以看看(同時關于誤刪了這位朋友的評論,表示歉意):http://blog.csdn.net/yuanmanzheng/article/details/5472967
posted on 2011-07-08 12:08 蝸牛也Coding 閱讀(2695) 評論(13) 編輯 收藏 引用