Hãy nói rằng tôi có một số mã C++:Tại sao C++ thực thi hành vi đó trong quá trình khởi tạo chéo?
if (error)
goto exit;
...
// size_t i = 0; //error
size_t i;
i = 0;
...
exit:
...
Tôi hiểu chúng ta không nên sử dụng goto
, nhưng vẫn còn tại sao
size_t i;
i = 0;
biên dịch trong khi size_t i = 0;
không?
Tại sao hành vi này được thực thi theo tiêu chuẩn (được đề cập bởi @SingerOfTheFall)?
Có thể chuyển thành một khối, nhưng không phải theo cách mà bỏ qua các khai báo có khởi tạo. Một chương trình nhảy từ một điểm trong đó một biến cục bộ có thời lượng lưu trữ tự động không nằm trong phạm vi đến một điểm mà phạm vi đó không đúng định dạng trừ khi biến số có loại POD (3.9) và được khai báo không có bộ khởi tạo.
Trình biên dịch nào? –
@Adriano: g ++ 4.1.1 –
Đã thêm 'language-design' vì bạn đang hỏi về lý do cơ bản cho các quyết định thiết kế cho một ngôn ngữ. – Kos