我想知道 std namespace 是在哪个文件中定义的。
比如 vector 头文件,定义在 std namespace 中,但是我没有在 vector 头文件中找到 namespace std 相关的东西。
我知道同一个 namespace 可以跨文件
1
shylockhg 2018-11-06 09:12:09 +08:00 1
grep -r 'namespace\.*std'
|
2
v2byy OP 好吧,问题解决。
首先我用 notepad++在 msvc 的 include 路径下搜索了 namespace std, 发现是 yvals_core.h 文件中使用了宏 ```cpp /* NAMESPACE */ #define _STD_BEGIN namespace std { #define _STD_END } #define _STD ::std:: ``` 然后再搜索一下_STD_BEGIN,就发现了。 |
3
arzterk 2018-11-06 09:13:20 +08:00 1
一般是宏定义的啊,_STD_xxx 这种
|
4
shylockhg 2018-11-06 09:15:26 +08:00
随手打的真不靠谱,换这个吧 grep -r 'namespace\s\+std'
|
5
wutiantong 2018-11-06 09:19:58 +08:00
你 C++怎么学的?
namespace 谈何定义啊? 你找不到不代表就没有,std::vector 肯定是定义在 std namespace 里面的。 但 std namespace 相关的地方可能被做成了 macro,比如_LIBCPP_BEGIN_NAMESPACE_STD。 另外标准规定,除了个别情况(特例化 std::hash )不允许在 std namespace 里自定义代码。 |
6
mason961125 2018-11-06 09:51:48 +08:00 via iPhone
我觉得,你应该搜 namespace std,而不是 std namespace。
|