std::__1::cout和std::cout有啥区别?

goleft186 2012-11-24 10:30:11
我用的是Xcode,一打stl就自动出来std::__1::cout了,如题,这俩有时候区别呢?
...全文
638 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
FrankHB1989 2012-12-28
  • 打赏
  • 举报
回复
引用 4 楼 goleft186 的回复:
引用 1 楼 FrankHB1989 的回复:带有__或_起始后接大写字母的标识符保留给实现。如果你不是在实现/hack编译器/标准库大可不必理会。 LZ用的是libcxx还是啥?可能和libstdc++一样是用inline namespace用__1当版本号。 我是个菜鸟。。。不太懂你在说什么,看来想弄懂区别还是要再学习过段时间了,现在只想知道初学阶段两者是否有……
如果你没在写编译器或者标准库,需要保证不要在自己的代码声明的标识符中出现__,否则什么时候莫名其妙出问题纯属活该。如果你要用实现提供的带__的标识符,那么明白代码的可移植性受限。在std::__1就是指std的情况下不要用就是了。
goleft186 2012-11-24
  • 打赏
  • 举报
回复
引用 1 楼 FrankHB1989 的回复:
带有__或_起始后接大写字母的标识符保留给实现。如果你不是在实现/hack编译器/标准库大可不必理会。 LZ用的是libcxx还是啥?可能和libstdc++一样是用inline namespace用__1当版本号。
我是个菜鸟。。。不太懂你在说什么,看来想弄懂区别还是要再学习过段时间了,现在只想知道初学阶段两者是否有必要区分?用std::__1::cout的话是不是会在某些时候和书上用std::cout的代码出现结果不一致或其他问题的情况?
FrankHB1989 2012-11-24
  • 打赏
  • 举报
回复
<config>→<__config>
FrankHB1989 2012-11-24
  • 打赏
  • 举报
回复
看了下libcxx的源码,果然: <iostream>里有_LIBCPP_BEGIN_NAMESPACE_STD。 在<config>里有 // Inline namespaces are available in Clang regardless of C++ dialect. #define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace inline namespace是C++11的特性,其中的名称可以直接当成外部命名空间的名称来用。 不过Clang即便在C++98/03里也支持inline namespace。这里是system header就直接用扩展了。
FrankHB1989 2012-11-24
  • 打赏
  • 举报
回复
带有__或_起始后接大写字母的标识符保留给实现。如果你不是在实现/hack编译器/标准库大可不必理会。 LZ用的是libcxx还是啥?可能和libstdc++一样是用inline namespace用__1当版本号。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧