Đây có phải là C++ hợp pháp không?Bạn có thể sử dụng sizeof một thành viên khi khai báo một thành viên khác không?
struct foo
{
int a[100];
int b[sizeof(a)/sizeof(a[0])];
};
GCC 4.6 chấp nhận, nhưng MSVC 2012 thì không. Có vẻ như nó sẽ ổn với tôi, nhưng một chút Googling đã không giúp đỡ và tôi không biết phải tìm kiếm tiêu chuẩn ở đâu.
MSVC 2012 cho kết quả như sau:
error C2327: 'foo::a' : is not a type name, static, or enumerator
error C2065: 'a' : undeclared identifier
error C2070: ''unknown-type'': illegal sizeof operand
warning C4200: nonstandard extension used : zero-sized array in struct/union
thể trùng lặp của [Tại sao tôi không thể khởi tạo thành viên tĩnh không const hoặc mảng tĩnh trong lớp học?] (Http: // stackoverflow.com/questions/9656941/why-i-cant-initialize-non-const-static-member-or-static-array-in-class) –
Ngay cả khi nguyên nhân cuối cùng là tương tự, câu hỏi có vẻ rất khác với tôi . – Gorpik
Đoạn liên quan trong tiêu chuẩn C++ 11 là khoản 5, đoạn 8, tôi nghĩ vậy. – jrok