C/C의 길이가 0인 배열: 수수께끼 같은 오류
크기가 0인 배열을 정의하는 것이 무해해 보일 수 있지만, C/C에서 예상치 못한 결과가 발생합니다. ISO C 표준(9899:2011 6.7.6.2)에 따르면 배열의 크기는 0보다 커야 합니다.
이 제한 사항은 일반 배열과 가변 길이 배열(VLA) 모두에 적용됩니다. VLA의 경우 배열의 크기를 결정하는 표현식은 1보다 크거나 같은 값을 가져야 합니다. 이 표현식이 0 또는 음수로 평가되면 동작은 정의되지 않습니다.
이러한 명확한 요구 사항에도 불구하고 GCC와 같은 일부 컴파일러는 길이가 0인 배열을 정의할 때 불평하지 않습니다. 이는 대괄호([])가 포함된 최신 배열 구문을 사용하도록 업데이트되지 않은 레거시 코드에 대한 지원 때문일 수 있습니다. 그러나 길이가 0인 배열을 정의하는 것은 오류라는 점을 이해하는 것이 중요합니다.
이러한 배열을 정의해도 유효한 데이터 구조가 생성되지 않습니다. 어떤 방식으로든 어레이를 사용하려고 하면 정의되지 않은 동작이 발생하고 잠재적인 충돌이 발생할 수 있습니다. 코드가 항상 유효한 양수 크기의 배열을 정의하는지 확인하는 것이 중요합니다.
위 내용은 C/C에서 길이가 0인 배열이 문제가 되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!