中国开发网: 论坛: 程序员情感CBD: 贴子 599888
bjwf
这个属于使用模板的一点奇技淫巧.
#define countof( a ) ( sizeof(a) / ( sizeof( (a)[0] ) )
这个宏用来计算数组中成员的个数,有个缺陷是如果你传入一个指针而不是数组名的话,结果肯定不是你想要的,但编译器不会报错.

用模板的话,用个小技巧可以避免这个问题:

template <typename T, size_t N>
char (& countof_helper(T (&)[N]))[N];
#define countof(a) sizeof(countof_helper(a))

countof_helper是个函数,接受任意类型和大小的数组引用做参数.返回一个相同大小的字符型数组的引用.

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录