int size=100; int dataBuffer[size];
이 코드를 linux에서 실행하면 정상적으로 작동을 하지만 windows에서 컴파일을 하면 에러가 나오는군요..
os의 차이인가요?
컴파일러의 차이지요. 컴파일러마다 따르는 표준이 다를 수 있거든요. 또 확장 기능도 다르고요. 위의 문법이 ANSI C문법은 아닌거 같구요...
제가 알기로는 가변의 배열은 C9x규격에서 struct나 union에서나 가능한 것인데... 컴파일러가 size값이 바뀔 가능성이 없어서 알아서 최적화 해준게 아닌가 싶네요.
혹시 윈도에서 const int size=100으로 하면 컴파일 오류 안나오는지 확인해 보시죠.
아무튼 위험한 방법인듯 싶습니다. 안쓰는게 좋을듯 싶네요.
가변 길이 배열(VLA)은 C99 표준에서만 허용됩니다.
아마 C90만을 지원하는 컴파일러를 쓰셨거나 C++ 컴파일러를 쓰신 것 같습니다.
윈도우* 환경에서 많은 사람들이 비주얼 C++을 쓰니 후자일 것 같네요.
어쨌든 C99를 지원하는 컴파일러를 쓰시면 되지만!
요즈음 어떤 컴파일러들이 C99를 제대로 지원하는 지 모르겠네요. -_-;;
gcc 최신버젼은 C99 표준을 충실히 지원해서.. 컴파일 되구요..
ms의 컴파일러들은 지원을 안해서 안되는겁니다
mingw 는 어떨지 모르겠군요
예, 마이크로소프트*의 컴파일러는 C 컴파일러가 아니니까요.
C++ 형식은 다 무시되죠.
아쉬운 점은 최신의 Visual Studio 2005 조차도 C95 호환이라는 점.
C++ 형식은 다 error 입니다.
그렇군요.. 감사합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
컴파일러의
컴파일러의 차이지요.
컴파일러마다 따르는 표준이 다를 수 있거든요.
또 확장 기능도 다르고요.
위의 문법이 ANSI C문법은 아닌거 같구요...
제가 알기로는 가변의 배열은 C9x규격에서 struct나 union에서나 가능한 것인데... 컴파일러가 size값이 바뀔 가능성이 없어서 알아서 최적화 해준게 아닌가 싶네요.
혹시 윈도에서 const int size=100으로 하면 컴파일 오류 안나오는지 확인해 보시죠.
아무튼 위험한 방법인듯 싶습니다. 안쓰는게 좋을듯 싶네요.
가변 길이 배열(VLA)은
가변 길이 배열(VLA)은 C99 표준에서만 허용됩니다.
아마 C90만을 지원하는 컴파일러를 쓰셨거나 C++ 컴파일러를 쓰신 것 같습니다.
윈도우* 환경에서 많은 사람들이 비주얼 C++을 쓰니 후자일 것 같네요.
어쨌든 C99를 지원하는 컴파일러를 쓰시면 되지만!
요즈음 어떤 컴파일러들이 C99를 제대로 지원하는 지 모르겠네요. -_-;;
음.. 표준문제..
gcc 최신버젼은 C99 표준을 충실히 지원해서.. 컴파일 되구요..
ms의 컴파일러들은 지원을 안해서 안되는겁니다
mingw 는 어떨지 모르겠군요
C++
예, 마이크로소프트*의 컴파일러는 C 컴파일러가 아니니까요.
확장자가 .c 이면 C95 로 compile 합니다.
C++ 형식은 다 무시되죠.
아쉬운 점은 최신의 Visual Studio 2005 조차도 C95 호환이라는 점.
확장자가 .c 이면 C95 로 compile 합니다.
C++ 형식은 다 error 입니다.
아쉬운 점은 최신의 Visual Studio 2005 조차도 C95 호환이라는 점.
감사합니다.
그렇군요..
감사합니다.
댓글 달기