đơn giản là vì <math.h>
không khai báo các chức năng trong namespace std
. Nó đã được đưa vào tiêu chuẩn C++ chỉ vì lý do tương thích. C++ chính xác bao gồm sẽ là <cmath>
.
§D.5,2
Mỗi tiêu đề C, mỗi trong số đó có một cái tên có dạng name.h
, cư xử như thể mỗi tên được đặt trong không gian tên thư viện chuẩn của cname
tiêu đề tương ứng là được đặt trong phạm vi không gian tên chung. Nó không được chỉ định cho dù những tên này lần đầu tiên được khai báo hoặc xác định trong phạm vi không gian tên của không gian tên std
và sau đó được tiêm vào phạm vi không gian tên chung bằng cách sử dụng khai báo rõ ràng.
Mã của bạn hoạt động dưới cửa sổ là may mắn - nếu bạn muốn gọi nó như vậy. Câu cuối cùng đưa ra một gợi ý những gì có thể xảy ra dưới cửa sổ, nhưng không phải dưới linux: dưới cửa sổ, rõ ràng là các tên hợp lệ trong cả không gian tên chung và không gian tên std
.
Nguồn
2013-05-13 09:01:04
Bạn có bao gồm ''? –
juanchopanza
'#include', theo http://en.cppreference.com/w/cpp/numeric/math/sqrt –
hmjd