我在以下C代码中将错误'J_TypeInstructions'重新声明为不同类型的符号':
struct _J_TypeInstructions {
const char *instructionName;
} J_TypeInstructions[] = { { "j", "000010" } };
//typedef struct _J_TypeInstructions J_TypeInstructions;
答案 0 :(得分:2)
尝试改为:
struct _J_TypeInstructions {
const char *instructionName;
} J_TypeInstructions[] = { {"j"}, {"000010"} };
/* ^ ^ */
并且不要使用_J_TypeInstructions
之类的标记名称作为以_[A-Z]*
开头的标识符在C中保留。
编辑:我错过了评论专栏是问题的一部分:
typedef struct _J_TypeInstructions J_TypeInstructions;
您已经声明了一个标识为J_TypeInstructions
的变量。您不能在同一范围内声明与变量名称相同的类型,因为变量和类型名称的标识符位于同一名称空间中。更改变量的名称以解决问题。
答案 1 :(得分:1)
J_TypeInstructions
不能同时为变量名和类型。
首先,您创建了一个名为J_TypeInstructions
然后您尝试使用与先前定义的数组相同的名称定义类型。
另外,正如他的回答中提到的 ouah ,修复你的大括号,因为你现在使用它们的方式是尝试初始化一个带有2个值的char *,并且这会给你一个警告。