【发布时间】:2013-06-03 09:46:49
【问题描述】:
我正在用 g++ 编译 c 代码并遇到一些问题。 修复指定的初始化程序后,我留下了这个错误:
error: invalid conversion from 'void*' to '__u8*'
这是我的代码:
static inline void put_unaligned_le16(__u16 val, __u16 *cp)
{
__u8 *p = (void *)cp;
*p++ = (__u8) val;
*p++ = (__u8) (val >> 8);
}
感谢任何帮助解决此问题! 谢谢!
【问题讨论】:
-
错误很明显:您正试图用
void*初始化__u8*,这在C 中是合法的(隐式转换),但在C++ 中是不合法的(其类型系统“更安全”)。要么使用 GCC 编译,要么将cp显式转换为__u8*(但要注意严格的别名问题......) -
在 c++ 中,void 指针必须显式类型化。