ps. 예전에 회사 팀장님이 저런식의 코드를 공용라이브러리로 작성을 해놨는데 컴파일이 안되서 보니 저런 문제였더군요..
그래서 new로 바꿔서 작성했던 기억이 있습니다. :evil:
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
문제의 소지가 있을것 같습니다.[code:1]nTmp = 11
문제의 소지가 있을것 같습니다.
이럴 경우 기본에 배열이 10개만 선언이 되어있기 때문에 에러가 발생할것 같습니다.
직접 돌려 보진 않아서..^^;;
이게 맞을것 같습니다.
비표준에 한표
비표준에 한표
C99 표준입니다.[url]http://gcc.gnu.org/on
C99 표준입니다.
http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html
헉 이런 되네요..ㅋㅋ새로 생성되는 배열도 정상적으로 작동이 되는
헉 이런 되네요..ㅋㅋ
새로 생성되는 배열도 정상적으로 작동이 되는 군요.ㅋㅋ
몰랐네요.ㅋㅋ
정상 컴파일 및 정상 작동합니다.
표준입니다..단지 VC가 그 표준을 지키지 않아서 문제지요. :twi
표준입니다..
단지 VC가 그 표준을 지키지 않아서 문제지요. :twisted:
ps. 예전에 회사 팀장님이 저런식의 코드를 공용라이브러리로 작성을 해놨는데 컴파일이 안되서 보니 저런 문제였더군요..
그래서 new로 바꿔서 작성했던 기억이 있습니다. :evil:
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
[quote]int nTmp = 10; int arrayTmp[nTm
이건 nTmp가 어짜피 10이기때문에
int arrayTmp[10];
으로 컴파일러가 바꾸겠죠.
테스트해볼라면
라고 해보세요
근데 정말 이게 표준이 된건가요? 헐..
진짜표준? ㅡ,.ㅡ;;;;;;;;;;;;
VLA는 표준이 맞습니다. 추가로"아무위치"에서나 변수의 선언이 가능
VLA는 표준이 맞습니다. 추가로
"아무위치"에서나 변수의 선언이 가능합니다
C89에서는 { 이후 가장 처음 부분에서만 선언이 가능했죠.
이것도 표준 맞는지는...-_-;;;
VC 6.0은 C99가 나오기 이전에 나왔고, VC2005인가 에서는 지원된다고 하네요
참고로 배열을 선언하는 매개변수값이 자신이 유추가능하지 않는
비확정적 수라면 문제가 생길수 있습니다
(예를들어 매우크다거나...)
[quote="Anonymous"][quote]int nTmp = 10;
VLA는 C언어(C99)에서만 표준입니다.
C++에서는 const int nTemp = 10;인 경우에만 됩니다. 즉 const int nTemp = 10이 C표준 컴파일러와 C++ 표준 컴파일러에서 모두 작동하지만 작동하는 이유는 다릅니다. (아직도 C가 C++의 subset으로 보이십니까?)
그런데 범위가 한정지어져 있습니다. 기술적인 이유로 모든 storage class에서 사용할 수 있는 것은 아닙니다. storage class에 따라서 구현이 달라지게 되는 것은 모두 알 것입니다. (힙, 스택 등으로 말이지요.)
- 죠커's blog / HanIRC:#CN
댓글 달기