아. C99 오면서 이런 제약이 없어지긴 했음. 최신 버전의 Visual Studio에서 C99를 부분적으로 지원하나 보지. 가장 오래된 C언어 표준안인 ANSI C(C89)에서는 저렇게 쓰면 100% 오류 나.
ㅅㅅㅅ(125.128)2015-05-03 15:23
즉, C언어 표준이 1999년도에 C99로 업데이트되면서 선언부 외에 명령부에서도 변수의 추가 선언을 허용하도록 바뀐 것임. 그렇다 하더라도 C언어는 ANSI C(C89)를 지키는 것이 좋아. 아직도 많은 C 컴파일러(예: 임베디드 컴파일러)들이 ANSI C만 지원하고 있거든. C++야 원래부터 변수 선언 아무데나 해도 상관이 없는데 C는 가급적이면 변수 선언은 선언부에만 쓰도록 습관을 들여라. 그게 코드 호환성을 높이는 길임.
ㅅㅅㅅ(125.128)2015-05-03 15:25
감사합니다. 올때마다 많은거배워가네요
글쓴이(175.207)2015-05-03 15:27
2013에서는 scanf함수사용하면 에러발생하면서 scanf_s함수 사용하라고하는데. 같은 맥락인가요??
글쓴이(175.207)2015-05-03 15:29
음 그건 새 프로젝트에서 프로젝트 만들어줄 때 SDL 검사 옵션을 체크를 풀면 잘 될거야.
ㅅㅅㅅ(125.128)2015-05-03 15:30
dev C++같은데서 하면 오류남 ㅋ for ( int n = 0; ; )같은 구문도 마찬가지
익명(115.40)2015-05-03 15:32
ㄴ 아.. 감사합니다
글쓴이(175.207)2015-05-03 15:33
ㅇㅇ // 그렇지 뭐. for(A; B; C) D는 A; while(B) { D; C; }의 신택스 슈거(syntactic sugar)니까.
원래는 오류가 나는 게 맞아. 그저 Visual Studio 최신 버전의 융통성이지.
예를 들어 Visual C++ 6.0에서 똑같은 코드로 .c 파일을 컴파일해 보면 100% 오류가 난다.
ㄴ 아. 2013에서만되는건가요??? 새로깔았서 사용중인데.. 문법을 뛰어넘는 융통성이라 ..;;
아. C99 오면서 이런 제약이 없어지긴 했음. 최신 버전의 Visual Studio에서 C99를 부분적으로 지원하나 보지. 가장 오래된 C언어 표준안인 ANSI C(C89)에서는 저렇게 쓰면 100% 오류 나.
즉, C언어 표준이 1999년도에 C99로 업데이트되면서 선언부 외에 명령부에서도 변수의 추가 선언을 허용하도록 바뀐 것임. 그렇다 하더라도 C언어는 ANSI C(C89)를 지키는 것이 좋아. 아직도 많은 C 컴파일러(예: 임베디드 컴파일러)들이 ANSI C만 지원하고 있거든. C++야 원래부터 변수 선언 아무데나 해도 상관이 없는데 C는 가급적이면 변수 선언은 선언부에만 쓰도록 습관을 들여라. 그게 코드 호환성을 높이는 길임.
감사합니다. 올때마다 많은거배워가네요
2013에서는 scanf함수사용하면 에러발생하면서 scanf_s함수 사용하라고하는데. 같은 맥락인가요??
음 그건 새 프로젝트에서 프로젝트 만들어줄 때 SDL 검사 옵션을 체크를 풀면 잘 될거야.
dev C++같은데서 하면 오류남 ㅋ for ( int n = 0; ; )같은 구문도 마찬가지
ㄴ 아.. 감사합니다
ㅇㅇ // 그렇지 뭐. for(A; B; C) D는 A; while(B) { D; C; }의 신택스 슈거(syntactic sugar)니까.