1

それで、私は心から答えてもらいたい新しくてエキサイティングな質問があります. だから私はファイルコンプレッサー、基本的にはtarを書いていますが、正直なところ、そのコードはかなりうまくいっているようです。私が今行き詰まっているのは、プロジェクトに必要な追加機能です。リトル エンディアン マシンで作成されたかのように、バイナリ ファイルを生成できる必要があります。コードにインクルードしたヘッダー ファイルを作成し、ビット スワップを実行する必要があります。したがって、次のようになります。

#ifndef MYLIB_H
#define MYLIB_H

#define BITS_PER_BYTE 8
#define true 1
#define false 0

typedef unsigned char uchar;
typedef unsigned long ulong;
typedef unsigned int uint;
typedef unsigned short ushort;

#ifdef LITTLE_ENDIAN

#define SwapULong(val) (val << 24 | (val << 8 & 0xFF0000) | (val >> 8 & 0xFF00) | val >> 24 & 0xFF)
#define SwapUShort(val) (val << BITS_PER_BYTE | val >> BITS_PER_BYTE)

#else

#define SwapULong(val) (val)
#define SwapUShort(val) (val)

#endif

#endif

したがって、gcc でコンパイルしてプログラムを実行すると、エラーは発生しません。ただし、出力の hexdump -C を実行すると、出力はまだビッグ エンディアン オーダーのままです。

次に、-E フラグを指定してコンパイルを試みたところ、次のような行がたくさん表示されました。

./compress line #: typedef: command not found

になった

./compress line #: __extension__ : command not found

端末出力の最終行が表示されるまで

./compress line 86: syntax error near unexpected '}' token
./compress line 86: __extension__ typedef struct { int __val[2]; } __fsid_t;

それで、何が私にこれを引き起こしているのでしょうか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

endian.hヘッダーを含める必要があります。

于 2012-05-28T07:45:51.693 に答える