我实际上正在使用我公司的一些旧软件,我试图弄清楚如何让东西正常工作。
经过一些数据库编辑后,我得到了一个软件,它为我提供了一些* .C文件,以便稍后编译以获得环境模拟工具。
我的主要问题是我没有设法让任何编译工作。我正面临着两个电源错误:
错误:C2097:非法初始化
和
警告C4047'正在初始化':不同的间接级别。
我开始研究以了解这些间接水平。我想我理解用数据指针等保存指针指针的事情。
代码不是我的。计算机生成的所有应用程序。重点是,开发所有这些东西的人都退休了。
以下是代码的主要部分:
ST_FAMI.H
struct bit
{
unsigned bit0 :1;
unsigned bit1 :1;
unsigned bit2 :1;
unsigned bit3 :1;
unsigned bit4 :1;
unsigned bit5 :1;
unsigned bit6 :1;
unsigned bit7 :1;
unsigned bitnul :8;
};
union etatbit
{
int VETAT ;
struct bit VBIT;
};
typedef struct
{
union etatbit VACTUEL;
union etatbit VANTERI;
int VISUELEM;
int TMPCARTC;
} elemoct;
struct FAMI
{
char *PLIBFAMI;
int PNBELEM ;
char PTYPFAMI[2];
int PMSGRANCOM[2];
char PNBLIUTI;
char VETAVISFAMI;
char VNUMLIU;
char VPAGFAMI;
unsigned char PNUMPSBAC;
unsigned int PNUMGRPA[5];
char PNUMVOIE;
elemoct *Tptelmsg;
};
我的M1L0PS1.C档案:
line 1: #include "st_fami"
line 2:
line 3: elemoct E_L0PS1Pq0[64];
line 4: struct FAMI L0PS1Pq0 =
line 5: {"L0PS1Pq0",
line 6: 64,
line 7: {'M','P'},
line 8: {'T',0 },
line 9: 17,
line 10: 0,
line 11: 0,
line 12: 0,
line 13: 1,
line 14: 0,
line 15: 0,
line 16: E_L0PS1Pq0};
错误日志:
M1L0PS1.C
M1L0PS1.C(16) : error C2097: illegal initialization
M1L0PS1.C(16) : warning C4047: 'initializing' : different levels of indirection
我的问题: 我没有得到间接错误的级别。 我试过给我的初始化不同数据,如:&(E_L0PS1Pq1 [0])(元素0的地址)但是它没有按预期工作。
这段代码有什么问题?我注意到一个合适的C开发者。我曾经做过一些C ++或Java,而且由于那些不太严格的语言,我对指针的了解有点偏颇。 我正在编译“Microsoft(R)C优化Copiler版本5.10”。
对不起我的英文,感谢所有人阅读全文! :d
答案 0 :(得分:2)
PNUMGRPA[5]
是一个数组。您尝试使用0
而不是{0}
初始化它。
答案 1 :(得分:1)
您没有正确初始化PNUMGRPA
成员。