Trong C++, tôi có thể sử dụng khai báo using namespace std;
trong các tệp triển khai hàm không?sử dụng không gian tên trong thực hiện chức năng
Trả lời
Bởi "tệp triển khai chức năng", bạn có nghĩa là tệp .h hoặc tệp .cpp không? (Tôi thường gọi các tập tin .cpp "thực hiện", trong khi các tập tin .h là các tập tin "giao diện".)
Nếu bạn muốn nói, tập tin .cpp, thì dĩ nhiên. Đó là nơi bạn thường thấy using namespace std
. Nó có nghĩa là tất cả các mã trong tập tin .cpp này có quyền truy cập vào std
mà không có trình độ chuyên môn.
Nếu bạn ngụ ý tệp .h, thì bạn có thể, nhưng bạn không nên. Nếu bạn đưa nó vào tệp .h, nó sẽ tự động áp dụng cho bất kỳ tệp .cpp nào bao gồm tệp .h, có thể là nhiều tệp. Nói chung, bạn không muốn nói các mô-đun khác không có tên để nhập. Tốt nhất là đặt nó vào mọi tệp .cpp thay vì trong tệp .h chung.
Vâng, ý tôi là các tệp cpp. Tôi sử dụng namespace std trong file cpp chính và "std ::" trong file .cpp (không phải chức năng chính), vì vậy tôi chỉ tò mò về việc sử dụng namespace trong file cpp của hàm. – Sean
@Sean: không có quy tắc đặc biệt nào cho tệp .cpp "chính". Chỉ có một số quy tắc về 'main' _function_ (chỉ có thể' int' etcetera) nhưng những quy tắc đó không có bất kỳ ảnh hưởng nào đến các hàm hoặc lớp khác xảy ra được định nghĩa trong cùng một tệp. – MSalters
nếu theo "tệp triển khai chức năng", bạn có nghĩa là tệp .C/.cpp, v.v., tuy nhiên bạn có thể cố gắng tránh. Thay vào đó, bạn chỉ cần tiêm <iostream>
cho std::cout
, std::endl
v.v.
tôi giả sử bạn có nghĩa là một cái gì đó như thế này:
// Foo.h
void SayHello();
...
// Foo.cpp
#include "Foo.h"
using namespace std;
void SayHello()
{
cout << "Hello, world!" << endl;
}
Nếu đó là trường hợp, sau đó có. Tuy nhiên, nó được coi là thực tế xấu để sử dụng using namespace std;
trong các dự án lớn hơn.
Tôi muốn tránh sử dụng "sử dụng không gian tên" ngay cả trong các tệp triển khai, nếu sau này bạn muốn sử dụng một đơn vị dịch duy nhất, bạn sẽ nhận được xung đột tên. – GameDeveloper
Có thể bạn cũng muốn biết rằng bạn cũng có thể đặt using namespace std;
trong cơ thể chức năng như dưới đây. Điều này sẽ hạn chế phạm vi của câu lệnh using namespace
.
void f() {
using namespace std;
cout << "Foo" << endl;
//..
};
void g() {
cout << "Bar" << endl; //ERROR: cout and endl are not declared in this scope.
};
Điều này có thể hữu ích nếu bạn muốn sử dụng rất nhiều yếu tố của một namespace trong cơ thể của một hàm được viết trong một tập tin tiêu đề (mà bạn không nên cho mỗi gia nhập, nhưng đôi khi nó là OK hoặc thậm chí gần như cần thiết (ví dụ như các mẫu)).
- 1. Chức năng không gian tên trong jQuery
- 2. Chức năng không gian tên C++
- 3. Chức năng và không gian tên XSLT
- 4. Chức năng không gian tên jQuery Plugin
- 5. Chức năng lớp riêng vs Chức năng trong không gian tên chưa đặt tên
- 6. android runonuithread() chức năng không thực hiện
- 7. stacktrace và chức năng trong không gian tên
- 8. Thực hiện chức năng Traceroute trong android
- 9. cách sử dụng process.hrtime để nhận thời gian thực hiện chức năng async
- 10. chức năng glibc để lấy tên thực thi hiện tại?
- 11. psycopg2 không thực hiện chức năng PostgreSQL
- 12. Cách truy cập chức năng trong không gian tên
- 13. thực hiện chức năng với thời gian chờ
- 14. Hết thời gian thực hiện các chức năng thuần túy
- 15. thực hiện chức năng SIP trong IOS5
- 16. Hiển thị tên của chức năng hiện đang thực thi
- 17. Lỗi biên dịch VS2008 (+?) Với chức năng templated và 'sử dụng không gian tên'
- 18. Clojure chức năng để có được docstrings từ chức năng trong một không gian tên
- 19. Thực hiện chức năng JavaScript trong ứng dụng C#
- 20. chức năng tự thực hiện
- 21. Phantomjs không thực thi chức năng trong page.evaluate chức năng
- 22. sử dụng không gian tên trong @param
- 23. Chức năng in python trong thời gian thực
- 24. Thực tiễn tốt nhất: sử dụng không gian tên hoặc không gian mở lại?
- 25. Thực hiện Chức năng Hashing MySQL
- 26. C chức năng gọi lại được xác định trong một không gian tên chưa đặt tên?
- 27. Cách thực hiện chức năng thể dục
- 28. SQL server - thực hiện chức năng vô hướng mà không xac định tên db
- 29. C++ thực hiện bản đồ chức năng
- 30. Tôi có sử dụng không gian tên không tên trong tệp triển khai không?
Tôi thực sự dường như không hiểu câu hỏi của bạn ... Bạn có thể cung cấp thêm một số thông tin không? – Stormenet