構造体の配列を初期化しようとしています。構造体には関数ポインターがあり、そのように定義されています。
typedef struct{
char str[512];
char *fptr;
} infosection;
次に、配列を作成しようとします。
infosection section[] = {
("Software", *SoftwarePtr),
("Hardware", *HardwarePtr),
}
簡単なチュートリアルを使用して関数ポインターを定義しました。関数ソフトウェアは int を返します
int (*SoftwarePtr)()=NULL;
SoftwarePtr = &Software;
私の質問は、コンパイル時に表示される警告についてです。
初期化により、キャストなしでポインターから整数が作成されます
警告は、セクション配列内の行を参照しています。
だから私は2つの疑問があります:
- ポインターに */&/neither を誤用していませんか?それぞれの組み合わせを試しましたが、それでも同じ警告が表示されるようです。
infosection struct
ここで行うように、配列内ののインスタンスを宣言できますか?人々が 内で宣言する多くの例を見てきarray of struct
ましたがfor loop
、最終製品では、構造体の長いリストをその配列に含める必要があります。見られるように、簡単なリストのような方法portable
で人々ができるようなコード(ポイントする機能に対応する文字列)。add structs
これが配列のインスタンスを宣言する唯一の方法ですかinfosection section[]; section[0].str="software"; section[0].fptr=SoftwarePtr;
明確にするために、私はstructs
、array of structs
、およびについてかなりの調査を行いましfunction pointers
た。3つの組み合わせが問題を引き起こしているようです。