C非法操作员错误
我试图创建一个基本函数来交换短int的endianness,但它抛出了一个错误:C非法操作员错误,c,C,我试图创建一个基本函数来交换短int的endianness,但它抛出了一个错误: #ifndef __ENDIAN__ #define __ENDIAN__ #define Swap16(value) \ ((((unsigned short)((value) & 0x00FF)) << 8) | \ (((unsigned short)((value) & 0xFF00)) >> 8)) #define Swap32(value) \
#ifndef __ENDIAN__
#define __ENDIAN__
#define Swap16(value) \
((((unsigned short)((value) & 0x00FF)) << 8) | \
(((unsigned short)((value) & 0xFF00)) >> 8))
#define Swap32(value) \
((((unsigned)((value) & 0x000000FF)) << 24) | \
(((unsigned)((value) & 0x0000FF00)) << 8) | \
(((unsigned)((value) & 0x00FF0000)) >> 8) | \
(((unsigned)((value) & 0xFF000000)) >> 24))
void __inline SwapEndian(short* value) //ERROR HERE
{
*value = Swap16(value);
}
#endif
我使用的是VS2008,确切的错误是:
C2296: '&' : illegal, left operand has type 'short *'
我能做些什么来修复这个错误?如果你看看宏是如何展开的,你就会很清楚到底出了什么问题
&val
是类型为short*
的指针。但是你可以直接用宏的参数来计算。所以您试图对指针执行整数运算
因此,这将扩展到:
((((unsigned short)((&val) & 0x00FF)) << 8)
...
(((无符号短)(&val)和0x00FF))short*value
是指针
你需要去引用它,又名:
void __inline SwapEndian(short* value)
{
*value = Swap16(*value);
}
试试这个
void __inline SwapEndian(short* value)
{
*value = Swap16(*value);
}
void __inline SwapEndian(short* value)
{
*value = Swap16(*value);
}