69,382
社区成员
发帖
与我相关
我的任务
分享
情况一:
// 在数组赋值的时候,我才用循环赋0的方法,给数组赋值,这是赋值的函数
// 其中pArray是要被赋值为0的数组地址,可以是U8,U16,U32或者S8的,所以我用了void *
void ArrayeEvaluate( void * pArray, U8 length)
{
U8 i;
for( i = 0; i < length; i ++)
{
* pArray ++ = 0; // 这一行提示 'const void *' : unknown size
}
}
// 事先已经定义了数组
union
{
U8 State1[ 12 ];
U16 State2[ 13 ];
U32 State3[ 14 ];
S8 State4[ 15 ];
} EDID;
// 调用上面函数的格式为:
ArrayeEvaluate( EDID.State1, 12 );
提示:'const void *' : unknown size,我知道是因为void *不能确定长度,但是我想知道一下,每次调用的长度都不是确定的,怎么能让程序自己知道哪次是U8哪次是U16哪次是U32???
情况二:
还有的地方提示:illegal indirection
提示illegal indirection的时候,通常是如下的情况:
void ArrayeEvaluate( void * pArray, U8 length)
{
* ChooseNumber = 0; // 提示illegal indirection
for( i = 0; i < 8; i ++ )
{
* ChooseNumber |= 1 << ( tempChoose & 0x0000000f ); // 提示illegal indirection
tempChoose >>= 4;
}
* ChooseNumber >>= 1; // 提示illegal indirection
}
#define ArrayeEvaluate(pArray, length) \
{\
unsigned i; \
for( i = 0; i < length; i ++) \
{\
pArray[i]= 0; \
} \
}
#define ArrayeEvaluate(pArray, length) \
{\
unsigned i; \
for( i = 0; i < length; i ++) \
{
pArray[i]= 0; \
} \
}