C4047 - 间接级别 - 结构初始化

时间:2014-03-10 14:36:52

标签: c arrays pointers struct indirection

我实际上正在使用我公司的一些旧软件,我试图弄清楚如何让东西正常工作。

经过一些数据库编辑后,我得到了一个软件,它为我提供了一些* .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

2 个答案:

答案 0 :(得分:2)

PNUMGRPA[5]是一个数组。您尝试使用0而不是{0}初始化它。

答案 1 :(得分:1)

您没有正确初始化PNUMGRPA成员。