所以我有一個新的令人興奮的問題,我會非常喜歡回答。所以我正在寫一個文件壓縮器,基本上是一個焦油,並且誠實地說,代碼似乎很順利。我現在卡住的是該項目所需的附加功能。我們需要能夠生成二進制文件,就好像它們是在小型機器上製作的一樣。我創建了一個包含在我的代碼中的頭文件,該文件應該爲我交換位。它因此如下: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;
因此,任何想法可能會導致這對我?
任何幫助,將不勝感激。
86是什麼?你可以將它和周圍的線添加到你的問題? –