Tôi có một hàm đơn giản trong đó một mảng được khai báo với kích thước tùy thuộc vào tham số là int.Kích thước mảng C++ phụ thuộc vào tham số hàm gây ra lỗi biên dịch
void f(int n){
char a[n];
};
int main() {
return 0;
}
Đoạn mã này biên dịch tốt trên GNU C++, nhưng không phải trên MSVC 2005.
tôi nhận được các lỗi biên dịch sau:
.\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
tôi có thể làm gì để khắc phục điều này?
(Tôi quan tâm đến làm công việc này với MSVC, mà không sử dụng mới/xóa)
Vâng, nhưng phân bổ từ heap, mà "mới" hiện, là khác nhau nhiều từ phân bổ từ ngăn xếp đó là những gì OP đang cố gắng làm. –
Không quá nhiều lo lắng về hiệu suất cho thời điểm này, tôi nghĩ rằng nó là tự nhiên để làm việc ... nhưng nếu nó không phải là một phần của tiêu chuẩn C++ sau đó tôi hiểu – xxxxxxx
Re: _alloca: OP chỉ hỏi về việc lấy mã tương đương làm việc trên MSVC và không sử dụng mới/xóa. –