私は実際に私の会社のいくつかの古いソフトウェアで作業しており、それらを適切に機能させる方法を見つけようとしています。
データベースを編集した後、後でコンパイルして環境シミュレーション ツールを取得するための *.C ファイルを提供するソフトウェアを入手しました。
私の主な問題は、コンパイルを機能させることができなかったことです。私は 2 つの電源エラーに直面しています:
エラー: 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 Optimizing Copiler Version 5.10」でコンパイルしています。
私の英語で申し訳ありませんが、誰かがテキスト全体を読んでくれたらありがとう!:D