以下是引用BlueGuy在2010-7-31 20:10:22的发言:
原来如此,有个隐式转换。果然够猥琐。/
#define chDIMOF(Array) (sizeof(Array) / sizeof(Array[0]))window核心编程里就是这么写的。
其实现在stdlib.h中已经有_countof(_Array)
原形是:
/* _countof helper */
#if !defined(_countof)
#if !defined(__cplusplus)
#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))
#else
extern "C++"
{
template <typename _CountofType, size_t _SizeOfArray>
char (*__countof_helper(UNALIGNED _CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];
#define _countof(_Array) sizeof(*__countof_helper(_Array))
}
#endif
#endif
sizeof()返回的类型是size_t,其实是unsigned int。我都测试过了把程序改成:
for(d=0;d <= (COUNTS-1);d++)
printf("%d\n",array[d]);
就能够打印出所有元素。所以我认为是-1导致直接跳过循环。
[
本帖最后由 zisefengye 于 2010-7-31 21:41 编辑 ]