C99에서 정의한 변수 선언, 동적배열C99에서 정의한 변수 선언, 동적배열
Posted at 2008. 12. 24. 18:27 | Posted in 프로그래밍 언어/C/C++/MFC소스코드는 다음과 같다.
소스코드가 어려운 건 아니니까 출력결과는 넘어간다.
중요 포인트는
1. 소스 중간에 변수를 선언할 수 있다는 것. ( line 8,10 )
2. 배열 선언 시 그 크기를 변수로 지정해 줄 수 있다는 것 ( line 8 )
툴을 VS6을 써서 C를 배웠다면 저런 건 안 된다고 배웠겠지만;
99년 지정된 표준에서는 됨니다.
근데 VS2005랑 2008에서는 왜 안될까?
에러를 보면 위에 중요 포인트라고 짚은 것 때문에 안 되는 것이다.
컴파일러 옵션에서 뭘 설정해 줘야 할지도 모르겠다.
gcc에선 위의 코드가 잘 돌아간다.
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 }
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에선 위의 코드가 잘 돌아간다.