我在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;
答案 0 :(得分:1)
假设两个不同的变量类型可以命名为相同的东西是错误的假设。当您尝试将类型Unkown
的整数或数据设置为val时,会出现问题。程序不知道你是指的是未知类型还是int类型的val(它没有神奇地为你找出它)。因此,最好将它命名为不同的东西。此外,更好的命名约定来命名恰当地表示它们将被设置为等于的东西。