Compile Error ...
글쓴이: gkepsgds / 작성시간: 월, 2003/07/07 - 7:33오후
HP-UX, Ansi C, gcc를 사용하고 있습니다.
그런데 제가 짠 프로그램을 컴파일 하는데
에러가 나네요!
소스를 예를 들자면
int foo(const char *, int ); void main() { .... 여기서 foo 호출 } int foo( ch, n) const char *ch; int n; { .. return 1; }
이런 식으로 짰는데..
(Bundled) cc: "test.c", line 39: warning 5: "const" will become a keyword
.
(Bundled) cc: "test.c", line 39: error 1000: Unexpected symbol: "char".
(Bundled) cc: "test.c", line 39: error 1000: Unexpected symbol: ")".
(Bundled) cc: "test.c", line 39: error 1506: Parameters allowed in functi
on definition only.
(Bundled) cc: "test.c", line 1998: warning 5: "const" will become a keywo
rd.
(Bundled) cc: "gpms_client.c", line 1998: error 1000: Unexpected symbol: "const"
이런 에러가 납니다.
const를 빼고 선언하면 에러는 없습니다.
왜 이런 에러가 나는지 통 모르겠네요.
답변 부탁드립니다.
Forums:
K&R C입니다.
이게 전형적인 K&R C입니다. ANSI C에서는 아래와 같이 인수와 형을
짝지어서 함수 인수란에 다 넣습니다.
ansi C 쓴다고 하셨으니 당연히 에러 날 수밖에 없져
아 참 그리고 const는 C++이라면 몰라도 C에서는 웬간해서 빼는게 좋을 듯 한데..
컴파일러별로 별의별 특성이 다 있으니...
(일례를 들자면 구형 gcc의 경우 for문 초기화와 증감 산술식, 즉 세미콜론으로
구분되는 각 수식 중 첫번째와 세번째에
복잡한 수식 집어넣으면 컴파일 에러 엄청 냈습니다.)
Written By the Black Knight of Destruction
Re: K&R C입니다.
ANSI-C 이야기를 하면서 컴파일러의 특성을 고려해 const 를 빼자는 의견은
서로 상충됩니다. const/volatile 은 ANSI-C 에 공식적으로 추가된 것입니다.
--
Jun, Woong (woong at gmail.com)
http://www.woong.org
[code:1] 첫번째 int foo(const char
첫번째 방법으로 정의하든 두번재 방법으로 정의 하든 에러는 같은 에러가 나네요. 왜일까요?
[quote="gkepsgds"][code:1] 첫번째 int
다른 부분을 "완전히 배제한" 순수한 다음 코드가 제대로 번역되지 않는지요?
만약 위의 코드 번역에 문제가 없다면 님께서 생략하신 부분에 문제가 있는
것이며, 위의 코드 번역에도 문제가 있다면 사용하신 컴파일러 옵션과 버전을
함께 알려주시는 것이 답변하는데 도움이 되리라 생각합니다.
--
Jun, Woong (woong at gmail.com)
http://www.woong.org
[quote="전웅"][code:1]int foo(const ch
위의 코드만으로 컴파일 하니 에러가 발생하지 않더군요. ㅠ.ㅠ
제가 사용하는 옵션은 -lm -lpthread -lclntst8 를 사용하고 있습니다.
gcc 버전은
>gcc -v
Reading specs from /usr/local/pa20_64/lib/gcc-lib/hppa64-hp-hpux11.00/3.2/specs
Configured with: ../gcc/configure --prefix=/usr/local/pa20_64 --enable-languages
=c,c++ --host=hppa64-hp-hpux11.00 --target=hppa64-hp-hpux11.00 --with-ld=/usr/cc
s/bin/ld --with-gnu-as --enable-libstdcxx-v3 --disable-checking
Thread model: single
gcc version 3.2 20020708 (experimental)
혹시나 해서 글을 올립니다.저도 HP에서 컴파일이 잘 되지 않은적
혹시나 해서 글을 올립니다.
저도 HP에서 컴파일이 잘 되지 않은적이 있어서요..
제가 사용한 컴파일러의 버전은 잘 모르겠고..
아무튼 각 변수선언시 초기값을 주면 컴파일 에러가 난적이 있더군요..
int i = 1; // 이렇게 하면 에러가....
왜 그런지는 저도 잘 모르겠습니다.. ^^;
가끔은 밥을 굶어도 살 수 있다.
[quote="gkepsgds"][code:1]int foo(co
글 올리시면서 생략하신 부분에 문제가 있는 듯 합니다. 그리 방대하지
않다면 문제가 되는 부분을 가감없이 올리시는 것이 도움이 되지 않을까
생각합니다.
--
Jun, Woong (woong at gmail.com)
http://www.woong.org
댓글 달기