使用 extern 全局变量的正确方法是什么?

2023-12-03

文件 a.cc

int a = 0;

文件 b.cc

#include "a.cc"

文件 main.cc

#include "b.cc"
extern int a;

int main() {


}

g++ -c a.cc
g++ -c b.cc
g++ main.cc a.o b.o
error: multiple definitions of a

我在这里做错了什么?


你包括一个.cc (or .cpp) 文件,这是错误的。不要那样做。您需要一个标头,然后将extern int a;:

// a.h
// include guards omitted
extern int a;

// a.cc
#include "a.h"

int a;

// b.cc
#include "a.h"

// main.cc
#include "a.h"

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

使用 extern 全局变量的正确方法是什么? 的相关文章

随机推荐

  • 获取当前连接的 mysqli 数据库名称

    mysqli 中是否有一个选项可以在过程函数中获取当前连接的数据库名称 您可以使用查询 SELECT database AS the db
  • 我应该在方法签名中声明从方法引发的所有异常还是仅声明异常的超类?

    当我从方法中抛出已检查的异常时 我应该只在方法签名中声明异常的超类还是所有不同的类型 如果我有以下例外情况 private class SuperException extends Exception private class SubEx
  • 删除链表中的第一个节点有问题

    我正在实现一个链表 它需要有一个函数 当给定链表的头和 cstring 时 它会查找并删除值为 cstring 的节点 typedef struct node char entry 21 struct node next node retu
  • 使用 ImagePicker 时如何去除从 UIImagePickerController 编辑图像返回的图像上的黑底

    使用 UIImagePicker 时 它允许进入编辑模式 然后 对于横向模式拍摄的图像 如果用户不在 UIImagePicker 中手动缩放它 图像的顶部和底部将会有黑色条纹 背景 有没有办法摆脱它并使图像的该部分变得透明 pragma m
  • 如果所有 td 均为空,则隐藏表格行

    有没有一种简单的方法可以在没有每个循环的情况下做到这一点 我想隐藏整个 tr 但前提是所有的 td s 为空 该表是动态生成的 因此空白行可以位于任何位置 table1 tr has td empty remove HTML table t
  • 简单的OpenGL实现[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我致力于将一些休闲游戏移植到 Flash 上 它们基于 OpenGL 使用的OpenGL版本大多是1 x 游戏引擎依赖的是2D 它基于 OpenGL
  • 如何从 UIImage 获取 NSDATE?

    在这种情况下 如何从 UIImage 获取日期或元数据 UIImagePickerControllerSourceType picker sourceType UIImagePickerControllerSourceTypePhotoLi
  • 带有 NDK 的 Android Studio:链接错误:对“stderr”的未定义引用

    我已经编译了针对 android armeabi v7a 的 OpenCV 静态库 现在我尝试通过 Android Studio 中的 CMakeLists txt 文件将我的本机 C 代码与这些库链接起来 但失败并出现以下奇怪的错误 op
  • 你能优化这段代码吗? (姜戈、蟒蛇)

    我添加 添加 字段来检查用户的帖子 服装 添加到哪些类别 听起来很可怕 所以让我们深入研究代码 我想优化 get categories self obj 函数 class CategorySerializer serializers Mod
  • 如何通过 asyncio 使用阻塞函数

    我在一个项目中使用 django ORM 在 django 之外 我的工作流程是 通过 django ORM 选择对象并 然后使用 asyncio lib 将其发送到消息队列 问题是您无法在异步环境中调用阻塞函数 并且无法在阻塞环境中使用
  • 字节分配内存不足

    这是我在 Android 日志上收到的错误 确切地说 是 08 06 12 16 28 763 E dalvikvm heap 27065 Out of memory on a 184 byte allocation 184 要看情况 有时
  • 所有类别的线性时间排序

    我有这个也许很愚蠢的想法 因为我们有针对受限类别的线性时间排序算法 例如使用计数排序 基数排序的整数 就像在计算机单词中一样 所有类别的数字类型最终都以字节序列进行编码 在某种程度上与整数等类似 是否可以说明我们可以使用这些线性时间排序算法
  • 不继承 的字体

    我有输入和标签字段
  • 安装 RVM 后无法加载 Sass / Compass,无法与 Symfony2 中的 Assetic 一起使用

    我尝试使用 Capifony 它需要 Capistrano 而 Capistrano 需要 Ruby 但我的 apt 版本的 ruby 很旧并且抛出语法错误 然后我安装了 RVM 并执行了以下操作 rvm use 1 9 3 rvm rvm
  • IHubContext SignalR MVC 的 Autofac 注入

    我正在尝试让 SignalR 与 Autofac 一起工作 我有一个我在这里所做的精简版本的存储库 https github com justsayno signalr autofac 这是改编自使用的作品GlobalHost https
  • 响应式设计中的字体大小和元视口

    我必须从事一个需要响应的项目 这是我第一次这样做 我被一个 可能是愚蠢的 问题困扰 假设我有一个非常简单的页面 div style font size 6 SO div
  • 如何在安装过程中修改.NET配置文件?

    我使用 app config 文件来存储一些值 映射数据库的路径 数据连接选择 这些设置在用户计算机上有所不同 我希望安装程序能够正确设置它们 是否有一个安装程序可以在安装过程中使用 NET 配置文件并允许我创建一些对话框来帮助我填写这些值
  • WooCommerce 返回 get_total() 价格(保留两位小数)

    您好 我正在实现一个支付网关插件 但遇到了问题 它显示一个错误 他们说这是因为购物车的总量和价格网站为他们发送的总量不同 这是因为他们得到的结果没有十进制数字 在购物车中是519 00他们只收到519 该插件获取购物车总数 order gt
  • 使用 PC 调试 iPad Safari

    我想在 iPad 上的 Safari 上测试我的网站 我只有另一台电脑 有没有办法让我使用移动 Chrome 进行远程调试 如 ADB Android 调试桥 我在 StackOverflow 上搜索 似乎有一个 Adob e Edge I
  • 使用 extern 全局变量的正确方法是什么?

    文件 a cc int a 0 文件 b cc include a cc 文件 main cc include b cc extern int a int main g c a cc g c b cc g main cc a o b o e