联合重复成员

Union duplicate members

我最新的 C 程序需要处理简单的代数。当创建一个联合时,我的基本理解是只能初始化一个值(抱歉我的 crude/rough 解释),我很惊讶地发现我不能让具有相同名称的不同数据类型的变量。这是代码:

typedef union
{
    int val;
    Unknown val;
}Value;

这里是错误:

In file included from grid.c:5:0:
line.h:9:10: error: duplicate member ‘val’
  Unknown val;

我只是在做初学者的假设吗?如果是这样,为什么有必要在联合中保持变量名称的唯一性。 感谢您花时间阅读。 编辑: 以防万一:

typedef struct
{
    char label;
}Unknown;

假设两个不同的变量类型可以命名为同一事物是错误的假设。当您尝试将整数或 Unkown 类型的数据设置为等于 val 时,就会出现问题。该程序不知道您指的是 Unknown 还是 int 类型的 val(它不会神奇地为您计算出来)。因此,最好将其命名为不同的东西。此外,命名约定最好能恰当地代表它们将被设置为相等的事物。