2012-05-28 2 views
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로 컴파일하고 프로그램을 실행할 때 오류가 없습니다. 출력의 헥스 덤프 -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; 

어떤 아이디어가 나를 위해이 원인이 될 수 있습니까?

도움을 주시면 감사하겠습니다.

+0

줄 86은 무엇입니까? 질문에 주변 선을 추가 할 수 있습니까? –

답변

0

endian.h 헤더를 포함해야합니다.

+0

와우. 나는 그것을 잊어 버린 것을 믿을 수 없다. 그러나 그것을 고쳤다! 고맙습니다. – MustangeSilenna

관련 문제