联盟重复成员

时间:2016-03-27 07:07:58

标签: c naming-conventions unions algebra

我在C的最新课程需要处理简单的代数。在创建一个联合时,我的基本理解是只能初始化一个值(对于粗略/粗略的解释而言遗憾),我惊讶地发现我不能使用名为相同的不同数据类型的变量。这是代码:

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;

1 个答案:

答案 0 :(得分:1)

假设两个不同的变量类型可以命名为相同的东西是错误的假设。当您尝试将类型Unkown的整数或数据设置为val时,会出现问题。程序不知道你是指的是未知类型还是int类型的v​​al(它没有神奇地为你找出它)。因此,最好将它命名为不同的东西。此外,更好的命名约定来命名恰当地表示它们将被设置为等于的东西。