4

私はBeej's Guide to Network Programmingに従い、VC++ 2010 を使用していますが、構造体をコピーしてプログラムに貼り付けると、一部の型が正しくない識別子として表示されます。例えば:

u_int32_tそれが思い浮かび、いくつかの検索の結果、これらは 1999 年頃の C 言語の古い型であることがわかりました。stdint.hを含めることもできましたが、その意味を覚えておく必要があります。代わりにint、32 ビット長 (4 バイト) の standard を使用し、64 ビット長 (8 バイト) の他のものには を使用しlong long intました。

とにかく、最後の構文エラーに絞り込んでいますsa_family_tが、無効な識別子であると言われています。私はそれが何を意味するのか見当がつかず、検索しても何も見つかりませんでした。それが私の問題です。そのための型識別子に何を指定すればよいかわかりません。

私を悩ませているもう 1 つのことは、これ char __ss_pad1[_SS_PAD1SIZE];SS_PAD1SIZE無効として赤色で表示されることです。

4

1 に答える 1

8

sa_family_tは符号なし整数である必要があります。 Windowsヘッダーファイルはその標準に準拠していません。Winsock.hは、sockaddr構造体を次のように定義します。

struct sockaddr {
        u_short sa_family;              /* address family */
        char    sa_data[14];            /* up to 14 bytes of direct address */
};

したがって、コードをコンパイルするには、自分でtypedefsa_family_tを実行する必要があります。

于 2012-08-12T17:21:03.027 に答える