将结构放入匿名名称空间有什么作用? [复制]

2023-12-09

可能的重复:
为什么使用未命名的命名空间以及它们有什么好处?

查看某人的代码,这就是他们声明的内容:

namespace {

  struct myStruct {
     int x;
     int y;
  } obj1;

}

..在一个函数中我看到它是这样使用的:

myStruct& var = obj1;

(Notice namespace是匿名的。)

从我如何看待它的使用来看,我无法弄清楚为什么它是这样声明和使用的。

这样声明有何不同?

另外,为什么指针是这样创建的而不是传统的样式此处显示。即 myStruct *ptr;

谢谢你!


匿名命名空间内声明的所有内容都有一个唯一的、不可知的名称,因此不能从任何其他翻译单元引用。因此,保证匿名名称空间仅对于当前翻译单元而言是本地的,并且永远不会与其他翻译单元发生冲突。

例如,如果你说namespace { int i; },保证只有当前翻译单元才能看到全局i。即使此声明位于多个不同 TU 中包含的标头中,每个 TU 也会收到其own全局变量的副本(每个变量都有一个不同的、不可知的完全限定名称)。

效果类似于声明一个全局对象static(它提供了全局对象内部链接)在 C++03 中,其中匿名命名空间中的对象仍可能具有外部链接。在 C++11 中,未命名命名空间中的名称按照 3.5/4 具有内部链接,因此变量和函数的效果与声明它们的效果完全相同static– 但内部链接不仅仅适用于变量和函数(例如枚举、类、模板),因此从 C++11 开始,您应该始终更喜欢未命名的命名空间!

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

将结构放入匿名名称空间有什么作用? [复制] 的相关文章

  • 什么可能导致 sock send() 命令上的“资源暂时不可用”

    什么会导致Resource temporarily unavailable套接字上的错误send 命令 套接字设置为AF UNIX SOCK STREAM 它在大多数情况下都有效 但偶尔会出现此错误 套接字的接收端似乎工作正常 我知道这不是
  • 预加载整个模型以估计 Tensorflow Serving 的内存消耗

    当执行预测时 Tensorflow Serving 延迟初始化模型 DAG 中的节点 这使得很难估计保存整个模型所需的内存 RAM 是否有一种标准方法可以强制 Tensorflow Serving 将模型完全初始化 加载到内存中 您可以使用
  • 反序列化 GUID 数组时出现 JSON.NET 异常

    我正在使用 JSON NET 反序列化从浏览器发送的 AJAX HTTP 请求 并且在使用 Guid 作为参数的 Web 服务调用时遇到问题 当我使用内置的 NET 序列化器时 这工作得很好 首先 流中的原始字节如下所示 System Te
  • CodeLite 配色方案(主题)对于 C 来说很混乱

    我最近将 CodeLite for Linux Debian 更新到版本 14 0 我主要将 CodeLite 用于 C 看起来 IDE 搞乱了颜色主题 这里我有之前 CodeLite 13 0 https i stack imgur co
  • 在 Windows 应用商店应用程序 (Win 8.1) 中使用 MIDI

    我的目标是在 Windows 应用商店应用程序中接收 MIDI 消息 微软提供了一个名为Microsoft WindowsPreview MidiRT 作为 nuget 包 我设法获得了 MIDI 端口 但是MessageReceived尽
  • 替换大字符串中的多个字符串的最快方法

    我正在寻找替换大 1mb 字符串的多个 500 子字符串的最快方法 无论我尝试过什么 String Replace 似乎都是最快的方法 我只关心最快的方式 不是代码的可读性 可维护性等 我不在乎是否需要使用不安全的代码或预处理原始字符串 每
  • 使用“对‘boost::system::get_system_category()’的未定义引用”链接到 boost barfs

    我在静态链接使用 boost 1 35 库的应用程序时遇到问题 我使用的是 Linux debian Lenny box 带有 G 4 3 2 链接无 static工作顺利 具体来说 g Wall Wextra pedantic ggdb3
  • 在 C 中使用相等运算符 == 比较两个字符串是否相等 [重复]

    这个问题在这里已经有答案了 int main int argc argv if argv 1 hello printf True n else printf False n myProg hello False 为什么 我意识到strcmp
  • 如何使用 lstat() 确定是否为硬链接

    我的操作系统是linux 我用 C 编程 我知道我可以使用 lstat 来识别软链接 即使用 S ISLNK st st mode 但我如何识别该链接是硬链接呢 如果链接是硬链接 它将被视为常规文件 但是 我还想区分常规文件和硬链接 有什么
  • main() 是用户定义函数吗? [复制]

    这个问题在这里已经有答案了 程序员does定义内部发生的事情main 毕竟 那么 它应该被视为用户定义的函数吗 C 标准没有用户定义函数的概念 相反 它有一个概念库函数 main 不是库函数 但是 该标准还对其签名提出了一些要求 并且不得重
  • 创建一个从用户机密获取连接字符串的 DbContextFactory

    使用 DotNetCore 解决方案WebApi项目和一个单独的Data包含实体框架实现的项目 我们一直在升级库 因此我们使用所有最新的核心内容 In the Data项目 我们创建了一个ApplicationDbContextFactor
  • 不同平面中不同幅值的两条线段之间最近的两个 3D 点

    比方说AB1 AB2 CD1 CD2 AB1 AB2 and CD1 CD23D 点构成线段 所说的线段是不在同一平面 AP是一个点 线段AB1 AB2 BP是一个点 线段CD1 CD2 Point1 and Point2彼此最接近 两条线
  • Linux 相当于 GetCommandLine 和 CommandLineToArgv?

    我想知道是否有一些 API 可以在 Linux 上获取当前进程的命令行参数 我想我是非常不清楚的 该问题的真正目的是通过命令行参数传递 unicode 文件名 从文件中读取 proc self cmdline 例如 wallyk zf od
  • 来自“void *”的dynamic_cast

    根据this https stackoverflow com questions 3155277 cannot dynamic cast void to templated class void 没有 RTTI 信息 因此从void 不合法
  • 在 Silverlight 中调用 WCF 服务时使用 Observable.FromEvent

    我正在尝试使用 NET Reactive Framework 来简化对我正在编写的 Silverlight 3 应用程序使用的 WCF 服务的一些异步调用 问题是我很难找到一种有效的方式来构建我的代码 毫无疑问 部分问题是了解 Reacti
  • 对双向链表进行排序 C++

    尝试通过遍历列表的循环来完成此操作 在循环中 我将头节点输入到我定义的排序函数中 然后使用 strcmp 来确定节点中的哪个名称是否应该排在前面 它不起作用 因为写得太早了 我通过一次沿着列表一个节点进行线性比较 而不是回去查看第一个节点是
  • 网页上的富文本编辑器

    我正在尝试在我的网页中添加一个富文本编辑器 用户可以在其中撰写评论并格式化他们所写的内容 类似于我们在此网站上撰写帖子的编辑器 谁能指出我关于此的正确方向 任何可以帮助我构建这样一个组件的教程 我还想要一个免费的产品 忘记之前提到 类似的东
  • 像 MS Excel 一样在 C++ 中舍入双精度值

    我在网上进行了搜索 但找不到解决我的问题的方法 我只是想要一个像 MS Excel 那样对双精度值进行舍入的函数 这是我的代码 include
  • 如何在 JSON 输出上强制采用 ISO 格式“YYYY-MM-DDThh:mm:ss.sss”?

    我有一个 ASP NET WebApi2 api 它返回一些 JSON 格式的时间戳 时间戳具有毫秒分辨率 通常我会得到这种格式的时间戳 这很好 YYYY MM DDThh mm ss sss 不幸的是 如果时间戳恰好用整秒对日期进行编码
  • 着色器可以旋转形状以面向相机吗?

    我制作了一个球出现在 3D 空间中的场景 三角球耗费大量资源 所以我使用带有球纹理的二维表面 四边形 来完成此操作 但现在我需要在每次相机移动时调整形状的方向 我使用位置变换和 LookAt 方法来完成此操作 问题是我可以优化这个吗 如果可

随机推荐

  • 我如何使用 python 从 flashscore 中抓取足球结果

    网页抓取 Python 我是刮擦新手 我想抓取英超联赛 2018 19 赛季结果 赛程 结果 日期 但我很难浏览该网站 我得到的只是空列表 无 如果您有可以分享的解决方案 这将是一个很大的帮助 这就是我尝试过的 import pandas
  • Angular 2:向 ngModelGroup 添加验证器

    我正在使用一个ngModelGroup将多个表单输入分组在一起的指令 在文档中 https angular io docs ts latest api forms index NgModelGroup directive html 我读到有
  • Promise.resolve 与解决

    我有这个代码 var promise1 new Promise function resolve reject setTimeout gt console warn Elo resolve First response 1000 promi
  • 我可以通过主机名从 Kubernetes 中另一个节点上运行的另一个容器访问该容器吗?

    我相信我的问题很简单 我正在执行在裸机上安装 Kubernetes 集群的先决条件 假设我有 master Docker DB 容器的主机名固定在第一个节点上 slave Docker DB 容器的主机名固定在第二个节点上 我可以与mast
  • CArrayDataProvider 与 CGridView 分页 Yii

    我正在尝试对 a 进行分页CGridView using CArrayDataProvider my rawData是一个自定义数组 不是来自数据库 模型 因此 在控制器的操作中有以下内容 form new SearchUser here
  • EF Code First 中的计算列

    我需要在数据库中有一列由数据库计算为 行总和 行总和b 我正在使用代码优先模型来创建数据库 我的意思是 public class Income Key public int UserID get set public double inSu
  • 将非对称算法私钥和公钥与 RSA C# 一起使用

    我有两个包含 RSA 私钥和 RSA 公钥的 AsymmetryAlgorithm 对象 私钥是从 Windows MY 密钥库中检索的 公钥是从用户的证书中检索的 如何在 C 中将这些密钥与 RSACryptoServiceProvide
  • 画布内元素中的事件

    我在画布标签内绘制了图像 我如何向其中添加事件 我想在用户单击该图像时执行某些操作 character addEventListener click function alert foo true character is a var im
  • Android 日历提供程序 API 级别

    我们正在开发一个 Android 日历应用程序 问题是我们想要获取其他日历的事件并将我们的事件也分享给他们 据我所知 这是由内容提供商实现的 问题是日历内容提供程序所需的API级别是API 14 我们需要在API 7 Android 2 1
  • CGImageRef 宽度与每行字节数不一致

    我正在尝试从屏幕缓冲区中读取像素 我正在创建一个CGImageRef with CGDisplayCreateImage 但值CGImageGetWidth and CGImageGetBytesPerRow在一起没有意义 将每行字节数除以
  • 如何在sql server中将数字写入word函数[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何在 SQL Server 中编写一个函数来以文字形式输出数字 input 1输出 1个 输入 129输出 一百二十九 考虑使用辅助数字表 注意 这个 MS SQL 创建一个序
  • Firebase:setPersistenceEnabled 和 keepSynced 之间有什么区别?

    我一直认为 当我使用以下内容时 所有聊天对话数据都可以随时离线使用 但不知何故不是 所有节点都是从服务器加载的 FirebaseDatabase getInstance setPersistenceEnabled true 然后 根据 DO
  • Swift 广播流媒体 AVPlayer

    我想在 Swift 中从互联网传输音频 但还没有找到正确的功能示例 In Objective C AVPlayerItem playerItem AVPlayerItem playerItemWithURL NSURL URLWithStr
  • 使用 PHP 和 CURL 发出 PUT 请求

    首先 我基于以下假设进行工作 根据 REST 架构 您可以使用 PUT 创建新资源 在我的例子中是一个包含用户提供的附加信息的文件 如果这个概念不正确 请告诉我 这样我就不会从架构的角度提出错误的问题 我发现有两件事与使用 CURL 的 P
  • Python 正则表达式模式 * 未按预期工作

    在工作过程中Google 2010 年 Python 课程 我找到了以下文档 左侧出现 0 次或多次模式 但是当我尝试以下操作时 re search r i biiiiiiiiiiiiiig group 我期望 iiiiiiiiiiiiii
  • jqueryui自动完成限制多项选择

    我正在使用 jQuery UI 自动完成 并试图限制多个结果 基本上 我正在构建一个 PM 系统 我正在使用 收件人 字段的自动完成功能 但我试图限制一条消息可以发送给的人数 因此 将最大选择限制为 25 有什么办法可以限制这个吗 还有关于
  • Android中如何保存RecyclerView的滚动位置?

    我有位于 SwipeRefreshLayout 内部的 Recycler 视图 此外 能够在另一个活动中打开每个项目 返回到 Recycler 后 我需要滚动到所选项目 或滚动到上一个 Y 怎么做 是的 我用谷歌搜索 在 StackOver
  • 如何使用 thymeleaf 序列化 POJO?

    我想在 a 中插入一个 POJO 普通的旧 java 对象 作为普通 Json
  • 使用 AVG() 进行 MySQL 查询时出现问题

    我正在使用一个查询 该查询取每个给定 id 的所有记录的平均值 query SELECT bline id AVG flow as flowavg FROM blf WHERE bline id BETWEEN 1 AND 30 GROUP
  • 将结构放入匿名名称空间有什么作用? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么使用未命名的命名空间以及它们有什么好处 查看某人的代码 这就是他们声明的内容 namespace struct myStruct int x int y obj1 在一个函数中我看到它是这样使用