可以在 .h 文件中声明静态全局变量吗?

2024-05-03

static 关键字将全局变量的范围限制为该翻译单元。 如果我使用static int x在 .h 文件中并包含该 .h 文件每隔一个文件,它们不会都属于同一个翻译单元吗? 那么,x不是到处可见吗? 那么现在static有什么作用呢?

另外,有没有什么用static const int x,其中 x 是全局变量? 默认情况下,所有 const 全局变量不是都是静态的吗? 即使 const 变量被限制在文件中的 for 循环中,它的作用域是否也仅限于 TU?


如果你写

static const int x

in an .h然后将每个翻译单元归档#include-s this .h将有自己的私有变量x.

如果你想让 1 个全局变量对每个人都可见,你应该这样写

extern const int x;

in the .h文件和

const int x = ...;

在其中之一.cpp files.

如果你想让一个 static const int 仅对一个翻译单元可见 - 不要在.h根本没有文件。

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

可以在 .h 文件中声明静态全局变量吗? 的相关文章

  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • GetType() 在 Type 实例上返回什么?

    我在一些调试过程中遇到了这段代码 private bool HasBaseType Type type out Type baseType Type originalType type GetType baseType GetBaseTyp
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • 为什么pow函数比简单运算慢?

    从我的一个朋友那里 我听说 pow 函数比简单地将底数乘以它的指数的等价函数要慢 例如 据他介绍 include
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • Visual Studio 在构建后显示假错误

    我使用的是 Visual Studio 2017 构建后 sln在调试模式下 我收到错误 但是 当我通过双击错误列表选项卡中的错误来访问错误时 错误会从页面中消失 并且错误数量也会减少 我不太确定这种行为以及为什么会发生这种情况 有超过 2
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • 使用可变参数包类型扩展的 C++ 函数调用者包装器

    我绑定了一些 API 并且绑定了一些函数签名 如下所示 static bool WrapperFunction JSContext cx unsigned argc JS Value vp 我尝试将对象和函数包装在 SpiderMonkey
  • unordered_map 中字符串的 C++ 哈希函数

    看起来 C 标准库中没有字符串的哈希函数 这是真的 在任何 c 编译器上使用字符串作为 unordered map 中的键的工作示例是什么 C STL提供模板专业化 http en cppreference com w cpp string
  • 使用 GCP 的数据存储区时如何区分代码是在模拟器中运行还是在 GKE 中运行

    按照中给出的说明进行操作后 我不确定是否遗漏了任何内容https cloud google com datastore docs tools datastore emulator https cloud google com datasto
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 可访问性不一致:参数类型的可访问性低于方法

    我试图在两个表单之间传递一个对象 基本上是对当前登录用户的引用 目前 我在登录表单中有一些类似的内容 private ACTInterface oActInterface public void button1 Click object s
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp

随机推荐

  • 如何获取magento中登录客户的订单列表

    我正在努力获取客户订购的订单号 名称 列表 我尝试过使用 Mage getModel sales order gt load order id 但对我不起作用 实际上 我正在开发帮助台模块并尝试将订单分配给票证 好的朋友 感谢您的提示 我通
  • cv2.imread:检查图像是否正在被读取

    我正在用 python 编写一个 OpenCV 程序 在某些时候我有类似的东西 import cv2 import numpy as np img cv2 imread myImage jpg do stuff with image her
  • 在 iOS8 中使用 UISearchBar 启用取消按钮

    有什么方法可以启用 UISearchBar 的 取消 按钮吗 现在 每当我致电辞职第一响应者时 取消按钮都会被禁用 仅当我再次点击搜索栏时 取消才会启用 有没有办法停止禁用取消按钮 这是适用于 iOS 8 和 Swift 的可行解决方案 f
  • 单击浏览器后退按钮时,将用户带回到他们在上一页滚动到的位置

    当用户按下浏览器中的后退按钮时 是否可以将用户带回到他们向下滚动到的页面区域 如 pageA 是屏幕大小的两倍 因此您必须滚动才能阅读更多内容 您单击 pageA 上的链接转到新页面 pageB 阅读后 您在浏览器中单击 返回 现在 当您返
  • 如何使用 OpenCV 找到红色区域? [复制]

    这个问题在这里已经有答案了 我正在尝试编写一个检测红色的程序 然而有时它比平常更暗 所以我不能只使用一个值 检测不同深浅的红色的最佳范围是多少 我目前使用的范围是 128 0 0 255 60 60 但有时它甚至检测不到我放在它前面的红色物
  • UIScreen 屏幕始终返回 1 个屏幕

    我正在尝试在不使用镜像模式的情况下通过 Airplay 在 Apple TV 上显示图片 但当镜像关闭时 UIScreen Screens 方法始终返回 1 个屏幕 主屏幕 我希望我的图片显示与照片应用程序相同 Airplay 无需镜像 N
  • JS Facebook登录iOS8

    我的 facebook 应用程序上的登录按钮在 iOS 8 中完全停止工作 我以为这是我所做的事情 但是当我从他们的网站获取 facebook 示例 html 并将其应用到我的页面时 它仍然不起作用 我的应用程序 ID 已被替换 与 xxx
  • constexpr 函数及其参数

    constexpr int hello int j return j 12 constexpr int bye int j 6 return j 12 int main int i 6 constexpr int a1 hello i er
  • 能够重置使用 Yield 生成的 IEnumerator (C#)

    如果我使用yield而不是手动创建IEnumerator 是否可以实现IEnumerator Reset 不 这是不可能的 当 C 编译器处理迭代器 包含迭代器的方法 时yield语句 编译器生成一个实现 IEnumerable 和 IEn
  • 良好的客户端套接字池

    我需要管理从我的 Java 应用程序到外部服务器的长时间运行的 TCP 套接字连接 我正在寻找一个好的套接字池 这样我就可以重复使用套接字 有什么建议吗 你可以看看在上面建立一个套接字池公共池 http commons apache org
  • 计算产生相同 BST 的唯一节点序列的数量

    问题 给定一个最多 50 个整数的特定序列 它们代表 某个二叉搜索树 BST 的节点 有多少种排列 这个序列在那里 这也会产生完全相同的 空白石板时间 将原始序列作为 1 个序列包含在总计数中 例如 对于这样的序列 5 2 1 9 8 答案
  • 如何从现有的远程分支创建本地分支?

    我想从现有的远程分支 假设是远程 A 创建一个分支 然后将更改提交到存储库 我已使用以下命令从现有的远程 A 创建本地分支 git checkout remote A git branch master remote A 现在我已经使用以下
  • “访问此资源所需的证书无效”

    XMLHttpRequest Network Error 0x800c0019 Security certificate required to access this resource is invalid 我已经找到解决方案了 首先 我
  • 错误:安装 ffi 时出错:错误:无法构建 gem 本机扩展

    我在 Mac 64 位系统中遇到此错误 并且机器上安装了 xcode Building native extensions This could take a while ERROR Error installing ffi ERROR F
  • 处理 UIPageControl 有太多点而无法全部显示在屏幕上的最佳方法是什么

    我的应用程序中有一个 UIPageControl 大约有 10 个页面 点 看起来非常完美 但是用户可以添加许多不同的视图 因此点的数量可能会变成 30 个 发生这种情况时 点就会从屏幕边缘消失 并且您始终无法看到当前选定的页面 这一切看起
  • Python请求响应以utf-8编码但无法解码

    我正在尝试使用 python 抓取我的messenger com facebook Messenger 聊天记录 并且我使用谷歌浏览器开发工具来查看聊天历史记录的 POST 请求 并且我已将整个标头和正文复制为请求可以使用的格式 我得到 H
  • Java:无法从未命名的模块读取包?

    在将项目转移到 Gradle 时 我停止使用 org json 的自定义构建 该构建安装了 module info java 以符合模块系统 现在 我通常通过 Maven 使用它 并且由于 org json 默认情况下不是一个模块 因此它被
  • 这段汇编语言代码是什么意思?

    我是一名学生 刚刚开始学习汇编语言 为了更好地理解它 我只是用 C 写了一个简短的代码并将其转换为汇编语言 奇怪的是我有点听不懂 代码是 include
  • 如何在 C 应用程序中将鼠标光标设置在 X11 上

    我有一个相当大且相当旧的 C 应用程序 已移植到 Linux 上 我负责让鼠标光标正常工作 但遇到一些问题 我能够将我们需要的大部分光标转换为使用提供的标准光标X字体光标 http tronche com gui x xlib append
  • 可以在 .h 文件中声明静态全局变量吗?

    static 关键字将全局变量的范围限制为该翻译单元 如果我使用static int x在 h 文件中并包含该 h 文件每隔一个文件 它们不会都属于同一个翻译单元吗 那么 x不是到处可见吗 那么现在static有什么作用呢 另外 有没有什么