C99에서 정의한 변수 선언, 동적배열C99에서 정의한 변수 선언, 동적배열

Posted at 2008. 12. 24. 18:27 | Posted in 프로그래밍 언어/C/C++/MFC
소스코드는 다음과 같다.

  1 #include <stdio.h>
  2
  3 int main()
  4 {
  5     int size;
  6     printf("숫자입력 : ");
  7     scanf("%d", &size);
  8     int arr[size];
  9     printf("출력해염\n");
 10     int i=0;
 11     for(i=0; i<size; i++)
 12         arr[i] = i;
 13     for(i=0; i<size; i++)
 14         printf("%d->%d\n", i, arr[i]);
 15     return 0;
 16 }

소스코드가 어려운 건 아니니까 출력결과는 넘어간다.

중요 포인트는

1. 소스 중간에 변수를 선언할 수 있다는 것. ( line 8,10 )
2. 배열 선언 시 그 크기를 변수로 지정해 줄 수 있다는 것 ( line 8 )

툴을 VS6을 써서 C를 배웠다면 저런 건 안 된다고 배웠겠지만;

99년 지정된 표준에서는 됨니다.

근데 VS2005랑 2008에서는 왜 안될까?
에러를 보면 위에 중요 포인트라고 짚은 것 때문에 안 되는 것이다.
컴파일러 옵션에서 뭘 설정해 줘야 할지도 모르겠다.

gcc에선 위의 코드가 잘 돌아간다.
//