gcc 4.4.3 c89배열의 크기를 할당 초기화
왜 내가 char의 포인터 배열을 초기화 할 때 배열의 크기를 할당 할 수 없는지 궁금합니다. 이 작품을 좋아
variable-sized object may not be initialized
:
나는 다음과 같은 오류가 발생합니다. 그러나 sizeof는 char *가 4 바이트 크기이므로 4 바이트를 반환합니다. 그게 내가 원하는 실제 크기가 아니기 때문에 좋지 않습니다.
void inc_array(const char * const src, size_t size)
{
/* Array of pointers */
char *dest[sizeof(src)] = {0};
}
그러나 이것은 실제 크기를 전달하고이를 사용하여 배열의 길이를 초기화하는 것입니다.
sizeof가 size_t를 반환하고 size_t를 전달할 때의 차이점은 무엇입니까? 어떤 제안에 대한
많은 감사,
네, 맞습니다. 나는 단지 그것을 테스트했다. – ant2009
그래서 VLA는 사용자가 시도하고 초기화 할 때만 완벽하게 허용됩니다. 이 오류가 발생한 이유는 이것이 올바른 것으로 표시했습니다. 감사. – ant2009
@robUK : 현재의 C 표준에서 허용되며, 구형 C 표준의 gcc 확장으로 사용할 수 있습니다. – caf