[英]Convert unsigned char array with int to unsigned char
有人可以帮我解决以下错误吗? 我可以在尝试通过buf
之前先投len
吗?
int len=2;
unsigned char tmp[len + 1];
unsigned char * buf = &tmp;
错误是:
error: cannot convert 'unsigned char (*)[(((unsigned int)((int)len)) + 1)]' to 'unsigned char*' in assignment
如果只需要指向数组的指针,请使用
unsigned char * buf = tmp;
顺便说一句,您声明tmp
的方式使其成为可变长度数组 (VLA)。 从技术上讲,尽管许多编译器都支持VLA作为扩展,但是C ++不允许使用这些 。
问题不在于len
。 问题是您试图获取数组的地址,而不是数组的第一个元素的地址。 类型根本不匹配。
代替:
unsigned char* buf = &tmp[0];
另外,数组名称(FSVO“方便地”)很方便地衰减为&tmp[0]
,因此您可以简单地编写:
unsigned char* buf = tmp;
另外,您目前没有为数组的维数使用常量值-确保将len
为const
并使用常量值初始化。 在C ++ 11,this'd更好地constexpr
要真正确保你不小心尝试使用GCC沃拉斯。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.