【问题标题】:C incompatible types error when assigning to variable of same type分配给相同类型的变量时出现C不兼容类型错误
【发布时间】:2011-10-23 18:26:41
【问题描述】:
我有以下代码:
typedef unsigned char some_type[6];
int main() {
some_type some_var1;
some_type some_var2;
some_var1 = some_var2;
return 0;
}
当我尝试编译它时,我收到以下错误消息:
incompatible types when assigning to type 'some_type' from type 'unsigned char *'
这是为什么?两个变量的类型完全相同?我该怎么做才能让它发挥作用?我无法更改 typedef,因为它是我正在使用的 API 的一部分。
【问题讨论】:
标签:
c
arrays
pointers
types
【解决方案1】:
您不能将一个数组分配给另一个数组,因为数组会衰减为常量指针。此外,您可能不想只将一个数组的地址复制到另一个变量中。你需要使用类似memcpy的东西。
【解决方案2】:
您不能像那样将数组分配给彼此。如果这些是字符串,请使用 strcpy:
strcpy(some_var1, some_var2);
如果没有,请使用 memcpy:
memcpy(&some_var1, &some_var2, sizeof (some_type));
【解决方案3】:
您应该为此使用 memcpy,因为 C 并不真正支持以这种方式复制结构。
memcpy(&some_var1, &some_var2, sizeof(some_var));
【解决方案4】:
不能以这种方式复制数组。复制数组的常用方法是使用memcpy。