using 命名空间 std 的顺序;并包括?

2024-06-07

我最近看到这个代码在 C++ 项目的源文件中使用:

using namespace std;
#include <iostream>

忽略所有是否是个好主意的问题using namespace std到底,上面的代码合法吗?文件中这两行之前没有任何代码。

我本以为这不会编译,因为namespace std尚未在范围内声明,直到#include <iostream>指令将其包含到文件中,但是使用该项目的构建系统可以很好地进行编译。如果有人有规范相关部分的链接,我们将不胜感激。


也许是一个有趣的数据点。当我编译以下内容时:

using namespace std;
using namespace no_such_namespace;

使用 g++ 4.5.2,我得到:

c.cpp:2:17: error: ‘no_such_namespace’ is not a namespace-name
c.cpp:2:34: error: expected namespace-name before ‘;’ token

需要明确的是,这两行是我编译的整个源文件。

Neither std nor no_such_namespace此时已被定义为名称空间,但 g++ 仅抱怨第二个。我不think标识符有什么特别之处std在没有声明的情况下。我认为@James Kanze 是对的,这是 g++ 中的一个错误。

EDIT: 并且已经报道过。 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29556(5年前!)

更新:现在已经八年多了,仍然没有分配给任何人,更不用说修复了。 g++ 4.9.2 展示了这个问题。 clang++ 3.5 没有,但它会发出警告std和一个致命错误no_such_namespace:

c.cpp:1:17: warning: using directive refers to implicitly-defined namespace 'std'
using namespace std;
                ^
c.cpp:2:17: error: expected namespace name
using namespace no_such_namespace;
                ^
1 warning and 1 error generated.

更新:截至 2021 年 9 月 24 日,错误报告仍处于开放状态,并且该错误存在于 g++ 11.2.0 中。 2021 年 7 月 24 日发布的评论建议 g++ 应对此发出警告。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

using 命名空间 std 的顺序;并包括? 的相关文章

随机推荐

  • 如何在 Django QuerySets 中编写别名?

    如何为 django 查询集中的列名编写别名 对于两个链接字段与同一外部模型的联合式组合 例如 非常有用 例如在 mysql 中 select m as n b as a from xyz 我如何在 django 查询集中执行此操作 mod
  • iostreams - 将 `wchar_t` 或 `charXX_t` 值打印为字符

    如果你喂一个wchar t char16 t or char32 tvalue 到一个狭窄的 ostream 它将打印代码点的数值 include
  • 使用 scala 进行重复的所有排列

    我正在寻找 scala 方法来给出所有排列而不重复 我知道这个网站上已经有一些帖子 但它们似乎有一个稍微不同的问题 我正在寻找所有重复的排列 例如 combine List A C G 应该产生 List List A A A List A
  • 在 Python 中识别大型字符串列表中的项目之间的文本相似性的最有效方法是什么?

    下面的代码实现了我想要实现的结果 有一个称为 引理 的字符串列表 其中包含特定类别单词的可接受形式 另一个列表称为 形式 包含在不同时期和特定语言的不同方言的大量文本中发现的单词的许多拼写变体 对于 forms 中的每个单词 我想获取 le
  • 如何忽略系统默认Locale来检索resourceBundle

    我正在使用本地化 Web 应用程序java util ResourceBundle类和属性文件 我有两个语言环境 fr FR 和 en US 并且我想使用 en US 作为默认值 所以我编写了以下文件 messages fr FR prop
  • iOS 6 中的模态视图控制器强制横向方向

    我有一个以纵向模式呈现的 UITabBarController 在其中一个选项卡上 我有一个以模态方式显示 UIViewController 的按钮 一个简单的故事板 segue 执行该操作 我希望这个模态视图以横向模式显示 但我无法让它自
  • 将日期刻度添加到 R 中的 ggplot

    我试图在此图中的 x 轴上添加刻度以显示一年中的所有月份 我的代码如下 library ggplot2 library scales p lt ggplot df test aes time reading p geom point alp
  • ActiveStorage上传大型base64编码字符串?

    如果我有在客户端上使用 JavaScript 编辑 生成的图像 例如 裁剪的照片或画布绘图的结果 是否可以使用 ActiveStorage 上传它 它通常是一个包含以下内容的大字符串 img src 它存储在 JavaScript 变量中
  • Silverlight - 将按钮上的 IsEnabled 属性绑定到 ViewModel 上的属性

    我正在构建一个 Silverlight 应用程序 我想在后台进行长时间运行的操作时禁用按钮 我使用的是 MVVM 因此在 ViewModel 中我有一个名为 SearchInProgress 的属性 现在我想在 SearchInProgre
  • C++ 在运行时分配 const 值?

    我有一个在运行时永远不会改变的恒定值 但在运行时之前不可能知道 有没有一种方法可以在不定义常量的情况下声明常量 无论是否作为类的成员 并在确定后 且仅一次 分配一个计算值 或者我是否必须诉诸非常量声明并使用编码 S Ps ALL CAPS变
  • 如何让 VSCode 在当前工作区中打开?

    我在 Linux 上使用 VSCode 我有多个 Linux 工作区 当我在新工作区中的 VSCode 中打开新文件时 它会在原始工作区中的 VSCode 中打开一个新选项卡 而不是在当前工作区中打开 VSCode 的新实例 这确实是令人讨
  • 如何更改隔离级别?

    我正在使用 EF 4 0 并且我想使用隔离级别serializable 因为在事务中我想在读取时阻止寄存器 好吧 在 SQL Server 中 我尝试使用以下命令更改隔离级别 SET TRANSACTION ISOLATION LEVEL
  • 如果没有 Marionette,Geckodriver/Firefox 如何工作? (针对 FF 53 运行 python selenium 3)

    我仅在硒控制的 Firefox 弹出窗口中看到奇怪的 不受信任的证书 错误 非常具体 为了解决这个问题 各种谷歌结果建议关闭 marionette 如下所示 from selenium webdriver common desired ca
  • 如何检查从 SPARQL * 通配符扩展的所有级别的子属性?

    在维基数据中 我想找到一个项目的国家 地区 如果该项目直接有一个国家 则可以直接进行 或者通过爬上 P131 位于行政领土实体 直到找到一个国家 这是查询 item wdt P131 wdt P17 country 上面的查询工作正常 除非
  • Start-Job 将 XML 对象传递给 -ArgumentList 在 Powershell V2 和 V3 中工作方式不同

    我正在使用 Powershell v3 在 Windows Server 2012 上测试我的应用程序的部署脚本 该脚本在使用 Powershell v2 的 Win Server 2008 R2 和 Win 7 上运行良好 我现在遇到的问
  • Emacs cperl - 常量块中的缩进

    我正在运行基于 GNU Emacs 24 3 50 2 的 Aquamacs 3 0a cperl 版本是 6 2 当我编辑 Perl 常量块时 我得到了我不想要的额外缩进 use constant ONE gt 1 TWO gt 2 TH
  • 对于跨域 XHR 丢弃 cookie 不是更简单吗?

    在进行网络开发时 我一直在与奇怪的限制作斗争 其中之一是 AJAX 请求的同源限制 我问自己 在创建请求时丢弃 cookie 而不是阻止对跨域资源的请求是否会更简单 以避免滥用 AJAX 请求的身份验证凭据 浏览器会话 Cookie 是一种
  • 用于动态视图数据/表单的 ASP.Net MVC 编辑器模板

    我正在实现一个 MVC3 Razor Web 应用程序 该应用程序检索用户可以从其他服务编辑的一些 字段 因此要在视图中编辑的属性列表是完全动态的并且在编译时未知 我编写了一些部分视图和 HTML 帮助程序 它们循环从其他服务检索到的组和属
  • C# WPF 中的内存泄漏

    在处理所有使用过的对象后 我需要减少 c WPF 中的内存泄漏 但我无法通过使用以下代码片段完全减少内存消耗 这是我的代码 string str Uri uri private void Button Click object sender
  • using 命名空间 std 的顺序;并包括?

    我最近看到这个代码在 C 项目的源文件中使用 using namespace std include