我正在使用'const int'和'char const * const',以通知编译器我的值永远不会改变。我需要成功完成最少的程序和数据存储。
typedef struct{
char const * const Name[2];
const int MaxValue;
const int MinValue;
const int Type;
const int EppromLocation;
const int NextID;
const int PreviousID;
union{
unsigned int DefaultValue;
unsigned char bytes[2];
}SetValues;
} Parameters;
extern volatile Parameters MenuRegister[50];
我遇到错误:
a.c:119: error: (364) attempt to modify object qualified const
a.c:123: warning: (358) illegal conversion of pointer to integer
该错误显示在我的源文件中
MenuRegister[0].Name[0]="A";
MenuRegister[0].Type=1;
MenuRegister[0].SetValues.DefaultValue=1;
MenuRegister[0].EppromLocation=1;
MenuRegister[0].Visible=true;
MenuRegister[0].NextID=1;
MenuRegister[0].PreviousID=1;
MenuRegister[0].MaxValue=1;
答案 0 :(得分:3)
问题是您无法在实例化后设置这些const限定值。创建后,您将需要初始化const限定的struct成员。
也许是这样(我简化为2的数组,因为在一个示例中我不会为它们的50个做这些):
MenuRegisters[2] = {
{.Name = {"A","B"},
.Type=1,
.SetValues.DefaultValue=1,
.EppromLocation=1,
.Visible=true,
.NextID=1,
.PreviousID=1},
{.Name = {"C","D"},
.Type=2,
.SetValues.DefaultValue=2,
.EppromLocation=2,
.Visible=true,
.NextID=2,
.PreviousID=2}}
还要注意,Visible
不在您给我们提供的Parameters
的定义中。