Theo cuốn sách tôi đang đọc, rand()
đòi hỏi #include <cstdlib>
trong C++
Tuy nhiên, tôi có thể biên dịch đoạn mã sau sử dụng rand()
mà không #include <cstdlib>
cũng không using namespace std;
trong Visual Studio 2015.
Tại sao hai không cần thiết để biên dịch ? Tôi có nên bao gồm cstdlib?Tại sao rand() biên dịch mà không bao gồm cstdlib hoặc sử dụng không gian tên std?
C++ Code:
#include <iostream>
int main()
{
std::cout << rand() << std::endl;
}
Bạn có thể biên dịch với tùy chọn '/ showIncludes' (trong thuộc tính dự án của iDE trong" C/C++ | Advanced | Show Includes ") để xem chính xác cách' stdlib' được bao gồm. –
@MichaelBurr Tôi thấy bây giờ, đầu ra trong Visual Studio cho thấy rằng iostream đã bao gồm cstdlib. Có cách nào để biết tệp nào đang được đưa trực tiếp và gián tiếp không? Tôi chỉ tò mò –
Mức độ thụt lề của đầu ra bằng cách sử dụng tùy chọn '/ showIncludes' cho biết tiêu đề nào được bao gồm tiêu đề nào khác. Ví dụ: với Bản cập nhật VS 2015 1, ' 'chỉ trực tiếp bao gồm' '- tất cả các tiêu đề khác được đưa vào được bao gồm gián tiếp bởi' istream' hoặc tiêu đề sâu hơn trong cấu trúc phân cấp. –