2010-01-06 28 views
8

Tôi đọc rằng việc sử dụng chỉ thị không được khuyến khích trong C++ nói không bao giờ đặt sử dụng chỉ thị trong các tệp tiêu đề. Tại sao nó lại như vậy? Bất kỳ gợi ý cho tôi?tại sao không sử dụng chỉ thị trong C++?

Cảm ơn!

Trả lời

2

using namespace x; là một ý tưởng rất tồi, vì bạn có không có ý tưởng tên nào bạn đang nhập, ngay cả với thư viện chuẩn.

Tuy nhiên: using std::cout; và các tuyên bố tương tự là một ý tưởng rất tốt, bởi vì họ nhập những biểu tượng một cách rõ ràng, và làm cho mã dễ đọc hơn (mặc dù nó vẫn có thể không phải là một ý tưởng tốt để đặt chúng trong phạm vi toàn cầu trong các tập tin tiêu đề) .

+1

ai quan tâm đến tên bạn nhập, lỗi biên dịch nếu có sự mơ hồ ... – Inverse

+3

@ Ngược lại, không chỉ bạn có thể hiển thị tên, nhưng tên được hiển thị như là một phần của phạm vi rộng hơn bao gồm cả chỉ thị sử dụng mà còn là không gian tên mà nó chỉ định. Các tên rõ ràng không được nhập vào phạm vi nơi chỉ thị xuất hiện. Vì vậy, sự mơ hồ với nhiều tên hơn là có thể. –

3

Vì nó có thể phá vỡ mã làm việc, khi cố gắng thêm tiêu đề của bạn, nếu không gian tên tiêu đề của bạn lấy mẫu không gian tên khác được xác định trong mã làm việc trước đây.

4

Nếu bạn đang nói về 'sử dụng' chỉ thị, lý do của việc không sử dụng đó là vì nếu bạn nói

using namespace std;

trong một tập tin tiêu đề, tất cả các file mà #include tiêu đề đó sẽ bị buộc để sử dụng không gian tên đó và điều đó có thể gây ra sự cố.

+1

Không, họ sẽ không bị buộc phải sử dụng không gian tên đó. –

+0

"Đây không phải là một đối số, nó chỉ là mâu thuẫn!" – struppi

+0

@struppi mynamespace :: foo = 1 –

0

Tương tự như không khai báo biến tĩnh trong tệp tiêu đề. Thêm việc sử dụng câu lệnh trong các tệp tiêu đề sẽ mang không gian tên vào tệp .cpp bao gồm tệp tiêu đề. Nó không phải là cần thiết. Trong trường hợp xấu hơn, bạn có thể phải thay đổi một số tên biến hoặc hàm trong .cpp để tránh xung đột tên.

Các vấn đề liên quan