Đối với đoạn mã C++ dưới đây:mảng tĩnh được xác định với kích thước không xác định, dấu ngoặc trống?
class Foo {
int a[]; // no error
};
int a[]; // error: storage size of 'a' isn't known
void bar() {
int a[]; // error: storage size of 'a' isn't known
}
tại sao không phải là biến thành viên gây ra một lỗi quá? và ý nghĩa của biến thành viên này là gì?
Tôi đang sử dụng phiên bản gcc 3.4.5 (đặc biệt mingw-vista) thông qua CodeBlocks 8.02.
Mở Visual Studio Express 2008 - Microsoft (R) C/C++ Compiler Tối ưu hóa 15.00.30729.01 cho 80x86, tôi đã thông báo sau:
class Foo {
int a[]; // warning C4200: nonstandard extension used : zero-sized array in struct/union - Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
};
int a[];
void bar() {
int a[]; // error C2133: 'a' : unknown size
}
Bây giờ, điều này cần một số Giải thích quá.
Chú thích đề cập đến "mảng tĩnh". Các "mảng tĩnh" này nằm trong câu hỏi của bạn ở đâu? Tôi không thấy một tham chiếu duy nhất cho bất kỳ "mảng tĩnh" nào. – AnT
Tôi có nghĩa là các mảng được phân bổ tĩnh. Vui lòng chỉnh sửa câu hỏi nếu bạn thấy cần thiết. Cảm ơn bạn. –