컴파일시 발생한 에러
글쓴이: ohjungtaek / 작성시간: 월, 2004/10/18 - 5:20오후
갑자기 리눅스 커널 소스가 보고 싶다는 생각이 들었습니다.
그래서 웹에 들어가 소스 코드를 다운로드 받았습니다.
이전에 Visual studio에서 소스 브라우저를 만들어서 소스 코드 봤던 생각이 났습니다.
VS 내에 간단한 프로젝트를 하나 생성시키고 *.c 파일들을 묶어서 컴파일해 보았습니다.
당연히 무수히 많은 error가 발생했습니다. -_-a
fatal error만 없다면 브라우저 파일을 만들 수 있으니까 하며 넘어갔습니다.
근데 error가 너무 많아서 fatal error가 뜹니다.
에러메시지는 다름과 같습니다.
resource.c d:\myproject\linux\linux-2.6.8.1\temp\asm\system.h(88) : error C2054: expected '(' to follow 'inline' d:\myproject\linux\linux-2.6.8.1\temp\asm\system.h(89) : error C2085: 'set_eiem' : not in formal parameter list d:\myproject\linux\linux-2.6.8.1\temp\asm\system.h(89) : error C2143: syntax error : missing ';' before '{' d:\myproject\linux\linux-2.6.8.1\temp\linux\timex.h(17) : error C2054: expected '(' to follow 'inline' d:\myproject\linux\linux-2.6.8.1\temp\linux\timex.h(18) : error C2085: 'get_cycles' : not in formal parameter list d:\myproject\linux\linux-2.6.8.1\temp\linux\timex.h(18) : error C2143: syntax error : missing ';' before '{'
그리고 에러가 발생하는 곳의 코드는
/* these are here to de-mystefy the calling code, and to provide hooks */ /* which I needed for debugging EIEM problems -PB */ #define get_eiem() mfctl(15) static inline void set_eiem(unsigned long val) { mtctl(val, 15); }
static inline cycles_t get_cycles (void) { return mfctl(16); }
와 같습니다.
에러의 원인이 뭘까요? inline이 왜 문제가 되는지--?
에러를 회피할 수 있는 방법이 없을까요?
도움을 부탁드립니다.
Forums:
inline은 C99에서 새로 도입된 것인데 MSVC는 C99를 지원하지
inline은 C99에서 새로 도입된 것인데 MSVC는 C99를 지원하지 않기 때문입니다.
시스템 헤더인 듯 한데 헤더를 수정할 수는 없겠죠? gcc를 쓰시든지, 꼭 MSVC여야
한다면 C++로 컴파일하는 방법도 있는데 다른 에러가 우수수 쏟아질지도
모르겠군요. :(
[code:1]#define inline[/code:1]회피가..
#define inline
회피가.. 되려나요? :)
#define inline 은 안되더라구요 -_-a
#define inline 은 안되더라구요 -_-a
MSVC에서의 inline 사용법...
inline 이 아니라 __inline을 써보세요...
MSVC에서는 요걸 인식하는 걸로 압니다만...
댓글 달기