C++11 中的命名空间问题?

2023-11-25

有人可以解释一下以下内容吗:

$ cat test.cpp 
#include <string>
std::string div;
$ g++ -c test.cpp 
$ g++ -std=c++11 -c test.cpp 
test.cpp:2:13: error: 'std::string div' redeclared as different kind of symbol
In file included from /usr/include/c++/4.7.1/cstdlib:66:0,
                 from /usr/include/c++/4.7.1/ext/string_conversions.h:37,
                 from /usr/include/c++/4.7.1/bits/basic_string.h:2814,
                 from /usr/include/c++/4.7.1/string:54,
                 from test.cpp:1:
/usr/include/stdlib.h:787:14: error: previous declaration of 'div_t div(int, int)'
$

不应该是div符号在std命名空间也适用于 C++11 模式?还是我的系统特有的?


/usr/include/stdlib.h

中的每个名字.hC stdlib 标头驻留在全局命名空间中(显然)。

此外,任何cHEADERC++ stdlib 标头将定义相应的名称HEADER.h in the std命名空间,但也允许将它们放在全局命名空间中(这样它们就可以做

// cHEADER
#include <HEADER.h>

namespace std{
using ::one_name_from_HEADER;
using ::another_name_from_HEADER;
// and so on...
}

并完成它)。

§D.5 [depr.c.headers]

p2 每个 C 标头,每个标头都有一个以下形式的名称name.h,其行为就像每个名称由相应的名称空间放置在标准库名称空间中一样cnameheader 放置在全局命名空间范围内。未指定这些名称是否首先在命名空间 std 的命名空间范围 (3.3.6) 内声明或定义,然后通过显式 using 声明 (7.3.3) 注入全局命名空间范围。

p3 [ Example:标题<cstdlib>确实在命名空间 std 中提供其声明和定义。它还可以在全局命名空间内提供这些名称。标题<stdlib.h>确实在全局命名空间中提供了相同的声明和定义,就像在 C 标准中一样。它还可以在命名空间 std 中提供这些名称。—结束示例 ]

正如你所看到的,反之亦然(<HEADER.h>可能会介绍名字std命名空间,就好像

// HEADER.h
#include <cHEADER>

using std::one_name_from_HEADER;
using std::another_name_from_HEADER;
// and so on...
}

),这使得这些标头之间的整体区别相当......毫无用处,真的。

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

C++11 中的命名空间问题? 的相关文章

  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 如何使用 Mercurial 子存​​储库来共享组件和依赖项?

    我们使用 C 开发 NET 企业软件 我们正在寻求改进我们的版本控制系统 我以前使用过mercurial 并且一直在我们公司尝试使用它 然而 由于我们开发企业产品 我们非常关注可重用的组件或模块 我一直在尝试使用 Mercurial 的子存
  • UIActivityIndi​​catorView 在 UICollectionViewCell 中不旋转

    我有一个自定义单元格加载在我的集合视图的底部 它唯一的工作是显示活动指示器视图 这在应用程序进行新的工作调用时发生 所以我将它添加到单元格中 如下所示 BBLoaderCell loaderCell collectionView deque
  • 在 d3 中缩放投影是什么意思?

    我知道在 D3 中 尺度是从输入数据值 域 到输出数据值 范围 的数学映射 我知道我可以设置一个比例 将域的输入映射到一个范围 如下所示 var scale d3 scale linear domain 100 500 range 10 3
  • 导出 JasperReports 查询结果

    在我的 Java 项目中 我有很多带有复杂 SQL 查询的 JasperReports 报告 其中包含很多参数 这些报告用于生成包含查询返回的数据的 pdf 文档 这些数据以各种方式分组和格式化 现在我还需要直接导出查询结果 例如 Resu
  • 如何从 Python Pyramid 提供临时文件

    目前 我只是提供这样的文件 view callable def export request response Response content type application csv use datetime in filename t
  • 当 printf 的相应参数不是短/字符时,使用 h 或 hh 长度修饰符是否非法?

    The printf函数族提供了一系列长度修饰符 其中两个是hh 表示一个signed char or unsigned char论点提升为int and h 表示一个signed short or unsigned short论点提升为i
  • PHP 电子邮件正文解码为纯文本

    我正在用 php 绑定一些相同电子邮件的提取内容 但我不能 接着就 随即 body imap body imap o email n I get Pour le r E9cup E9rer il suffit de le t E9l E9c
  • 批量“计数器”

    我正在尝试制作一个批处理文件 每次循环时都会将变量加 1 然后检查该变量是否等于 5 如果不等于 则再次循环 我知道这可能需要一个 while 循环 但我不知道该怎么做 而且我现在只是享受学习 Batch 的乐趣 这是代码 它没有按应有的方
  • C# MySQL like查询不带参数

    我正在使用查询来查找特定字段中的关键字 当我输入 parameter 然后添加带有值的参数时 它不起作用 但是当我直接输入值时 它起作用 任何人都可以帮助我将值作为参数传递给我的请询问 下面是我的代码 这可以工作并检索标题中包含 我的 一词
  • 如何防止使用 JPA 保存子对象?

    我在学校和学生实体之间建立了 OneToMany 关系 我想要做的是 当我保存学校对象时 不要保存或更新学生对象 当然也不要删除它们 当我尝试保存如下所示的学校对象时 它也会更新我的学生对象 但我不希望它们被更新 而只是可连接 有什么办法吗
  • C# 拦截WebBrowser发出的请求

    是否可以拦截所有的请求WebBrowser控制 我想修改每个请求的请求URI 包括图像 脚本 样式表等的请求 有一个活动叫 导航2之前 在发出任何请求之前调用 您可以使用它来修改传出请求
  • 无形状映射中的子类型多态性

    我构建了以下内容 import shapeless import poly object Main def main args Array String object iterateOverHList extends List gt Ite
  • 在未找到匹配项的 OPTIONAL MATCH 之后创建

    我正在尝试编写一个查询 如果另一个关系已经存在 它将创建一些关系 START a node 1 b node 2 c node 3 OPTIONAL MATCH a r1 RELATIONSHIP optional1 OPTIONAL MA
  • 判断CGPoint是否在图像区域内

    我试图弄清楚 CGPoint 是否位于图像的形状内 该图像是一个简单的黑色形状 如下面所附的两个 我想创建一个方法来确定 CGPoint 是否位于该形状的黑色区域内 我认为这需要两件事 1 将图像变成可以用代码读取的东西 不确定这将使用哪种
  • Flask 中的大文件上传

    我正在尝试实现一个烧瓶应用程序来上传文件 该文件可能非常大 比如差不多2G大小 我已经完成了服务器端处理功能 如下所示 app route upload
  • Volley 服务器错误,网络响应为空

    每次我尝试在 Volley 中使用 POST 方法时 都会出现严重错误 我在 getCause 中得到 null 值 在 get Network Response toString 中得到一些默认值 如果我使用 GET 方法 效果很好 我从
  • PUT POST 具有幂等性 (REST)

    我不太明白 HTTP 动词是如何定义为幂等的 我读到的只是 GET 和 PUT 是幂等的 POST 不是幂等的 但是您可以使用 POST 创建一个不会更改任何内容 例如在数据库中 的 REST API 或者为 PUT 创建一个在每次调用时都
  • pandas 数据框,按值复制

    我注意到我的程序中存在一个错误 它发生的原因是因为 pandas 似乎是通过引用而不是通过值复制 pandas 数据框 我知道不可变对象总是通过引用传递 但 pandas 数据帧不是不可变的 所以我不明白为什么它通过引用传递 有人可以提供一
  • Inno Setup,[Run] 中的空格和双引号

    我正在尝试在 Windows 上安排任务 但不幸的是 它不起作用 任务已创建 但不正确 当我查看任务的参数时 它说 PROGRAM C Program ARGUMENTS Files x86 AppName executable exe 我
  • C++11 中的命名空间问题?

    有人可以解释一下以下内容吗 cat test cpp include