2013-04-15 1 views
1

이 방법으로 메모리를 할당 한 할당 프로그램을 작성했습니다 : EdgeBucket* edgeTable[ n_scanlines ];. 나는 이것이 C에서는 일반적으로 불법이라는 것을 알고 있지만, C++에서도 그렇게 할 수 없다는 것을 알지 못했습니다. 그러나 g ++을 사용하여 컴파일 할 때 컴파일 오류가 발생하지 않습니다. 그러나 내 학년은 비주얼 스튜디오를 사용하고 있으며 프로그램을 만들려고 할 때 배열의 길이가 일정해야한다는 오류가있었습니다. 필자는 일반적으로 크로스 컴파일러의 무결성을 보장하기 위해 -ansi 및 -Wall 옵션을 사용하여 프로그램을 컴파일하지만 그로 인해이를 감지하지 못했습니다. 나는 나의 성적이 이것에 의해 손상되는 것에 대해 우려하고있다. 그래서 누군가가 -ansi 컴파일러가 왜 이것을 잡지 못했고, 더 많은 크로스 컴파일러 불일치를 막기 위해 무엇을 할 수 있는지 알고있다.동적 메모리 할당에 크로스 컴파일러 문제가 발생했습니다.

+0

귀하의 예는 동적 메모리 할당 BTW가 아닙니다. –

+0

그레이더가 Visual C++를 사용하고 있다면, 사용하고있는 것에 해당하는 VC++ Express 버전을 다운로드하고이를 사용하기 전에 할당을 할 수 있습니다. 원하는 경우 g ++ 및 IDE를 사용하여 개발할 수 있습니다. 당신은 지금 사용하고 있습니다 만, 이것은 당신에게 그레이더가 사용하는 것과 동일한 툴체인을 주기적으로 빌드 할 수있는 기회를줍니다. 물론이 모든 것은 VC++ Express를 설치하기 위해 Windows 시스템이나 VM에 액세스 할 수 있다고 가정합니다. –

+0

@JesseGood 알고 있습니다. 바로 그것이 내 학년의 컴파일러에서 컴파일되지 않을 것이므로, 바로 그 주제가됩니다. – Ataraxia

답변

1

-pedantic-errors 플래그를 사용하십시오. Example.

이들은 VLA (가변 길이 어레이)로 알려져 있습니다. C에서 C에서 합법적이고 C++에서는 불법입니다.

관련 문제