联合重复成员
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(它不会神奇地为您计算出来)。因此,最好将其命名为不同的东西。此外,命名约定最好能恰当地代表它们将被设置为相等的事物。
我最新的 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(它不会神奇地为您计算出来)。因此,最好将其命名为不同的东西。此外,命名约定最好能恰当地代表它们将被设置为相等的事物。