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

C4047-间接寻址级别-结构初始化,c,arrays,pointers,struct,indirection,C,Arrays,Pointers,Struct,Indirection,实际上,我正在使用我公司的一些旧软件,我试图找出如何使这些东西正常工作 在一些数据库编辑之后,我得到了一个软件,它给了我一些*.C文件供我以后编译,以获得一个环境模拟工具 我的主要问题是,我没有设法让任何编译工作。我面临两个主要错误: 错误:C2097:非法初始化 及 警告C4047“正在初始化”:不同级别的间接寻址 我开始我的研究,以了解这些间接层次。我想我理解了用数据指针保存指针的方法 代码不是我的。所有这些都是用计算机生成的应用程序。关键是开发所有这些东西的人都退休了 以下是代码的主要部分

实际上,我正在使用我公司的一些旧软件,我试图找出如何使这些东西正常工作

在一些数据库编辑之后,我得到了一个软件,它给了我一些*.C文件供我以后编译,以获得一个环境模拟工具

我的主要问题是,我没有设法让任何编译工作。我面临两个主要错误:

错误:C2097:非法初始化

警告C4047“正在初始化”:不同级别的间接寻址

我开始我的研究,以了解这些间接层次。我想我理解了用数据指针保存指针的方法

代码不是我的。所有这些都是用计算机生成的应用程序。关键是开发所有这些东西的人都退休了

以下是代码的主要部分:

圣法米医院

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的地址),但ait没有按预期工作

这个代码有什么问题?我是一个真正的C开发人员。我以前做过一些C++或java,我的指针知识有点偏颇,因为那些不太严格的语言。 我正在使用“Microsoft(R)C优化复印机5.10版”进行编译



对不起,我的英语,谢谢大家通读全文D

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

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

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

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

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

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

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

PNUMGRPA[5]
是一个数组。您试图使用
0
而不是
{0}

对其进行初始化。请编辑您的问题,以包含完整且未编辑的错误日志。还将显示一些更完整的代码(最好是所谓的代码),包括指出错误在源代码中的位置。为Etabit问题编辑。我将把我的问题重新编排得更为精确。在这里,它编译得很好。我认为你的编译器太旧了。@MichaelWalz我认为
无符号int-PNUMGRPA[5]=0
在任何符合条件的C编译器上都可以很好地编译。我认为您的编译器太旧:)这是一个很好的答案;)我在DOS电脑上工作。但一切都应该在它上工作,因为我使用的软件至少是20yo(compiler.exe文件来自1988年3月7日:D)。我会寻找另一个编译器版本,但我有点担心兼容性问题。一切看起来都“冻结”了,因为软件在一起工作,任何名称的更改都会破坏一切(甚至路径..一切都是硬编码的)。在不敢在这里提问之前,我搔了两天的头。请编辑您的问题,以包含完整且未经编辑的错误日志。还将显示一些更完整的代码(最好是所谓的代码),包括指出错误在源代码中的位置。为Etabit问题编辑。我将把我的问题重新编排得更为精确。在这里,它编译得很好。我认为你的编译器太旧了。@MichaelWalz我认为
无符号int-PNUMGRPA[5]=0
在任何符合条件的C编译器上都可以很好地编译。我认为您的编译器太旧:)这是一个很好的答案;)我在DOS电脑上工作。但一切都应该在它上工作,因为我使用的软件至少是20yo(compiler.exe文件来自1988年3月7日:D)。我会寻找另一个编译器版本,但我有点担心兼容性问题。一切看起来都“冻结”了,因为软件在一起工作,任何名称的更改都会破坏一切(甚至路径..一切都是硬编码的)。在不敢在这里提问之前,我搔了两天的头。请编辑您的问题,以包含完整且未经编辑的错误日志。还将显示一些更完整的代码(最好是所谓的代码),包括指出错误在源代码中的位置。为Etabit问题编辑。我将把我的问题重新编排得更为精确。在这里,它编译得很好。我认为你的编译器太旧了。@MichaelWalz我认为
无符号int-PNUMGRPA[5]=0
在任何符合条件的C编译器上都可以很好地编译。我认为您的编译器太旧:)这是一个很好的答案;)我在DOS电脑上工作。但一切都应该在它上工作,因为我使用的软件至少是20yo(compiler.exe文件来自1988年3月7日:D)。我会寻找另一个编译器版本,但我有点担心兼容性问题。一切看起来都“冻结”了,因为软件在一起工作,任何名称的更改都会破坏一切(甚至路径..一切都是硬编码的)。在不敢在这里提问之前,我搔了两天的头。请编辑您的问题,以包含完整且未经编辑的错误日志。还将显示一些更完整的代码(最好是所谓的代码),包括指出错误在源代码中的位置。为Etabit问题编辑。我将把我的问题重新编排得更为精确。在这里,它编译得很好。我认为你的编译器太旧了。@MichaelWalz我认为
无符号int-PNUMGRPA[5]=0
在任何符合条件的C编译器上都可以很好地编译。我认为您的编译器太旧:)这是一个很好的答案;)我在DOS电脑上工作。但一切都应该在它上工作,因为我使用的软件至少是20yo(compiler.exe文件来自1988年3月7日:D)。我会寻找另一个编译器版本,但我有点担心兼容性问题。一切都在厕所里