在有些时候,需要对预设的数组进行循环操作
如
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 中测试通过