2012-05-28 85 views
1

所以我有一個新的令人興奮的問題,我會非常喜歡回答。所以我正在寫一個文件壓縮器,基本上是一個焦油,並且誠實地說,代碼似乎很順利。我現在卡住的是該項目所需的附加功能。我們需要能夠生成二進制文件,就好像它們是在小型機器上製作的一樣。我創建了一個包含在我的代碼中的頭文件,該文件應該爲我交換位。它因此如下:Little Endian Macros

#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時,輸出仍然是Big Endian Order!

然後我試圖與-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; 

因此,任何想法可能會導致這對我?

任何幫助,將不勝感激。

+0

86是什麼?你可以將它和周圍的線添加到你的問題? –

回答

0

您需要包含endian.h標題。

+0

哇。我不能相信我忘記了。但它修復了它!謝謝。 – MustangeSilenna