C 에서 선언이 문제가 될수 있습니까?
글쓴이: Geniys / 작성시간: 수, 2005/12/28 - 10:41오후
#include <stdio.h> int main() { int a; { int b; } int c; return 0; }
VC 6.0에서 컴파일 했습니다.
위 코드에서 에러가 나는 이유를 전혀 모르겠습니다.
error
Quote:
Compiling...
t.c
D:\@tmp\testqq\t.c(9) : error C2143: syntax error : missing ';' before 'type'
Error executing cl.exe.
Forums:
해보지 않아서 확실히는 모르겠습니다만,일단 C 예전 표준에 따르면요.
해보지 않아서 확실히는 모르겠습니다만,
일단 C 예전 표준에 따르면요.
변수 선언은 해당 block의 시작에만 가능했습니다.
( 현재 C99에서는 중간에 해도 될것 같습니다만 ;; )
먼저 int a;는 문제가 없을테고요.
중간의 { int b; } 는 하나의 statement이기 때문에,
그 다음에 오는 int c; 는 자기가 속한 block의 시작에서 선언되지 않죠.
그래서 나오는 에러가 아닌가 싶네요.
그냥 추측이라는 :twisted:
c 는 맨 앞에 선언만 있어야 합니다. 중간에 블럭이 들어가면 그 뒤에
c 는 맨 앞에 선언만 있어야 합니다. 중간에 블럭이 들어가면 그 뒤에 선언이 올수가 없죠.
[quote="hyperhidrosis"]c 는 맨 앞에 선언만 있어야
c99 부터는 아닙니다 :)
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
c99부터는 아닌게 맞는데...
문제는 VC 6.0을 쓰신다니...c99 문법을 일부 지원할지는 모르겠습니다만...
그냥 c99를 사용하지 않으시는 것이 좋을 것 같은데요.
There is more than one way to do it...
vc6 패치 하셨는지요 ?vc6 에서도 문제없이 잘됩니다.
vc6 패치 하셨는지요 ?
vc6 에서도 문제없이 잘됩니다.
=================================
:: how about a cup of tea ? ::
=================================
[quote="maximus"]vc6 패치 하셨는지요 ?vc6 에
혹시 C++로 컴파일하지 않으셨나요?
윗분 말씀처럼 제 생각에도 확장자를 .c 로 했다면 VC6 은 알아서 C
윗분 말씀처럼 제 생각에도 확장자를 .c 로 했다면 VC6 은 알아서 C 문법만 적용합니다(물론 C99는 아닐겁니다. 부분적일지는 몰라도 일단 저렇게는 안되는게 맞습니다)
만약 저렇게 해도 컴파일이 된 분이라면 확장자를 .cpp 로 했을겁니다. :)
-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com
댓글 달기