gpt4 book ai didi

java - 如何在 C++ 中拥有一个全局变量

转载 作者:太空宇宙 更新时间:2023-11-03 10:28:14 25 4
gpt4 key购买 nike

我正在重写某人的代码,该代码有一个全局变量,该变量在初始化期间很有用,当 Java 将其回调到 C 时,以及之后。看起来他们已经在几个地方用 extern 前缀声明了这个变量,一次没有。我真的不明白为什么他们会对全局变量(前缀为 g_)执行此操作,而我宁愿将其称为 static 并只声明一次。

在这种情况下,我能做到这一点吗?或者 static 对线程安全有负面含义吗?我的大部分代码是 C++,但有一些 extern 'C' 东西,比如 Java 调用的那些函数。

目前我没有使用 externstatic 但我倾向于相信这就是我遇到链接错误的原因。

最佳答案

static 不会阻止变量在多个编译单元的编译过程中被复制。当您链接这些编译单元时,它们最终会看到同一变量的不同“实例”。换句话说,每个人都会看到自己的拷贝。

extern 的用处就是避免这种重复。您在实现文件 (.c) 中声明全局(非static)变量,并在给定的头文件( .h) 被每个依赖它的源文件包含。

关于java - 如何在 C++ 中拥有一个全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26476628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com