【问题标题】: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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-11-30
            • 2013-01-23
            • 1970-01-01
            • 2021-03-12
            • 2016-04-16
            • 1970-01-01
            • 2013-04-01
            相关资源
            最近更新 更多