Trong thư viện chuẩn, tôi thấy rằng không gian tên std
được khai báo là macro.Khai báo vùng tên là macro - C++
#define _STD_BEGIN namespace std {
#define _STD_END }
- Đây có phải là cách hay nhất khi sử dụng không gian tên?
- Macro được khai báo trong
Microsoft Visual Studio 9.0\VC\include\yvals.h
. Nhưng tôi không thể tìm thấy các tập tin STL bao gồm cả điều này. Nếu nó không được bao gồm, làm thế nào nó có thể được sử dụng?
Mọi suy nghĩ ..?
+1 để được giải thích tốt. Ước gì tôi có thể phù hợp! –
Trong C++ 11 trở lên, điều này có thể rất hữu ích trong việc phiên bản thư viện của bạn với [inline namespaces] (http://en.cppreference.com/w/cpp/language/namespace#Inline_namespaces). Về cơ bản, macro của bạn sẽ thay đổi tên của không gian tên nội tuyến bất cứ khi nào khả năng tương thích ABI bị hỏng. –