정수형 매개 변수에 따라 배열의 크기가 인 간단한 함수가있다.C++ 배열 크기에 따라 함수 매개 변수가 달라진다. 컴파일 오류가 발생한다.
void f(int n){
char a[n];
};
int main() {
return 0;
}
이 코드 조각 GNU C++에서 잘 컴파일,하지만
MSVC 2005 년에 나는 다음과 같은 컴파일 오류가 얻을 :
.\main.cpp(4) : error C2057: expected constant expression
.\main.cpp(4) : error C2466: cannot allocate an array of constant size 0
.\main.cpp(4) : error C2133: 'a' : unknown size
이 문제를 해결하기 위해 내가 무엇을 할 수 있는가?
는 스택에서 할당
그래,하지만, "new"가하는 힙에서 할당하는 것은 OP가하려고하는 스택에서 할당하는 것과 많이 다르다. (성능에 민감한 코드 일 수 있습니다.) –
잠시 성능에 대한 걱정은별로 없지만 작동하는 것이 자연 스럽다고 생각했지만 C++ 표준의 일부가 아니라면 이해했습니다 – xxxxxxx
Re : _alloca : OP는 MSVC에서 작동하는 새 코드를 사용하지 않고 동일한 코드를 가져 오는 것에 대해서만 질문했습니다. –