Nếu bạn sử dụng các thành viên được khai báo bên trong tiêu đề tiêu chuẩn string
thì có, bạn phải bao gồm tiêu đề đó trực tiếp hoặc gián tiếp (thông qua các tiêu đề khác).
Một số trình biên dịch trên một số nền tảng thể trên một số thời điểm tháng biên dịch ngay cả khi bạn thất bại trong việc bao gồm tiêu đề. Hành vi này không may, không đáng tin cậy và không có nghĩa là bạn không nên bao gồm tiêu đề.
Lý do đơn giản là bạn đã bao gồm các tiêu đề chuẩn khác mà cũng xảy ra để bao gồm string
. Nhưng như tôi đã nói, điều này có thể nói chung không được dựa vào và nó cũng có thể thay đổi rất đột ngột (ví dụ, khi một phiên bản mới của trình biên dịch được cài đặt).
Luôn bao gồm tất cả các tiêu đề cần thiết. Thật không may, có vẻ như không phải là một tài liệu trực tuyến đáng tin cậy mà các tiêu đề cần được đưa vào. Tham khảo sách hoặc tiêu chuẩn C++ chính thức.
Ví dụ, đoạn mã sau biên dịch với trình biên dịch của tôi (gcc
4.6):
#include <iostream>
int main() {
std::string str;
}
Nhưng nếu tôi loại bỏ các dòng đầu tiên, nó không còn biên dịch mặc dù iostream
tiêu đề thực sự cần được liên quan.
Nguồn
2012-03-02 20:08:25
Mọi người, cái quái gì ?! Tất nhiên đây là một câu hỏi thực sự, hợp pháp! Nơi nào tất cả các downvotes và đóng phiếu đến từ đâu? Quay trở lại giường. –
Bằng cách nào đó, trong tâm trí của tôi, câu hỏi này là hiệu quả như 'đây không phải là droids bạn đang tìm kiếm'. – karlphillip
@Linus Hãy tiếp tục. –