繁体   English   中英

将具有int的unsigned char数组转换为unsigned char

[英]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;

另外,您目前没有为数组的维数使用常量值-确保将lenconst并使用常量值初始化。 在C ++ 11,this'd更好地constexpr真正确保你不小心尝试使用GCC沃拉斯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM