C11 표준 (C++ 11은 함수의 어느 위치에서나 변수를 선언 할 수 있습니까?) 아래C11은 함수의 어느 위치에서나 변수 선언을 허용합니까?
코드 ANSI C (C89, C90)에서 유효하지 :
int main()
{
printf("Hello world!");
int a = 5; /* Error: all variables should be declared at the beginning of the function. */
return 0;
}
는 C11에서 유효한 소스 코드는?
왜 ANSI C가 유효하지 않습니까? ANSI는 C99을 따르기 위해 국가 표준을 어떻게 든 업데이트하지 않았습니까? –
ANSI C가 무엇을 의미하는지 정확하게 이해한다면 Is는 유효한 ANSI C입니다. ANSI는 가장 최신 버전으로 잘 업데이트됩니다. 불행하게도 도시 속어에서 "ANSI C"라는 용어는 C 89에 잘못 붙어 있습니다. –
@JensGustedt : ANSI C는 실제로 C89 였지만 1990 년 이래 ISO C가 표준이었고 ANSI는이를지지했습니다 ISO C를 표준으로 사용합니다. ISO C 90과 ANSI C 89의 차이점은 섹션 번호 매기기 AFAIK에 있습니다. 그렇지 않으면 텍스트가 변경되지 않았습니다. 그러나 그것은 쪼개지는 머리카락입니다. GCC는'-std = c89'의 동의어로'-ansi'를 사용하고'-std = c90'을 인식하지 못합니다 (그러나 GCC의 대부분의 버전은'std = c99'를 인식하고 최근의 것들은'-std = c11'을 인식합니다.). POSIX는 'c89' C 컴파일러를 요구했습니다. 'c99' 컴파일러가 필요합니다. 왜냐하면 아직 수정되지 않았기 때문입니다. –