在有些時候,需要對預設的數組進行循環操作
如
char char_array[] = {'a','b','c','d'};
int i;
for (i = 0; i < sizeof(char_array)/sizeof(char); i++) {
??? cout << char_array[i] << endl;
}
所以寫了個宏,取得數組的大小
template <typename T>
T get_size(T value[]);
#define ASIZEOF(a) sizeof(a)/sizeof(get_size(a))
然后就可以這樣寫了.
for (i = 0; i < ASIZEOF(char_array); i++) {
??? cout << char_array[i] << endl;
}
但是缺點就是不能正確的分別傳入的是一個指針類型,還是一個類型的數組.
代碼在vc6 和 devcpp 4.9 中測試通過
?