c 中的外部和全局

2023-11-27

谁能告诉我使用有什么特殊要求吗EXTERN or GLOBALC 程序中的变量? 如果我从 gloabl 更改为 extern,我看不出像下面这样的程序有任何区别。

#include <stdio.h>
#include <stdlib.h>
int myGlobalvar = 10;

int main(int argc, char *argv[])
{
  int myFunc(int);
  int i;
  i = 12;
  myGlobalvar = 100;
  printf("Value of myGlobalvar is %d ,  i = %d\n", myGlobalvar, i);
  i = myFunc(10);
  printf("Value of passed value : %d\n",i);
  printf("again Value of myGlobalvar is %d ,  i = %d\n", myGlobalvar, i);
  system("PAUSE");  
  return 0;
}
int myFunc(int i)
{
    i = 20 + 1000;
//extern int myGlobalvar;
myGlobalvar = 20000;
//    printf("Value of passed value : %d",i);
return i;
}

如果取消注释extern int myGlobalvar,该值不会改变。

有没有correct两者之间的区别?

有人可以纠正我吗?


关键词extern意思是“该变量的存储空间分配在其他地方”。它告诉编译器“我正在引用myGlobalvar在这里,你以前没见过,但没关系;链接器会知道你在说什么。”在你的具体例子中它不是特别有用,因为编译器does知道关于myGlobalvar-- 它是在同一翻译单元中较早定义的(.c or .cc文件。)您通常使用extern当你想指代某个东西时not在当前翻译单元中,例如在您将链接到的库中定义的变量。

(当然,通常该库会声明extern为您提供的变量,在您应该包含的头文件中。)

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

c 中的外部和全局 的相关文章

  • 使用 #pragma Once 和 #ifndef 时出现 VS 2010 C++ LNK2005 错误

    1 gt Deck obj error LNK2005 class Card card card 3VCard A already defined in Card obj 1 gt PokerTester obj error LNK2005
  • Visual Studios 2015 中的“恢复 NuGet 包”没有执行任何操作

    我将解决方案从 SVN 拉入 Visual Studios 2015 代码中的一些 使用 引用出现错误 因此我尝试在右键单击 解决方案 中的解决方案时运行 恢复 NuGet 包 选项探索者 这没有任何作用 我必须手动进入 nuget 管理器
  • 如何在 ASP.NET MVC 中将 XML 文件发送到客户端

    在 ASP NET MVC 中 我有一个数据库表 我想在某个视图页面上有一个按钮 如果某个用户单击该按钮 我的应用程序将生成包含数据库中所有行的 XML 文件 然后 应将包含 XML 的文件发送到客户端 以便用户看到下载弹出窗口 同样 我希
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • 我可以将 char 或 DateTime 设置为 null 吗?

    我可以将 null 设置为char数据类型 并且DateTime在 C 中 多谢你们 这是不可能的 它是一个值类型 使用 char myChar null DateTime myDate null 这相当于 Nullable
  • 预编译头和 Visual Studio

    有没有办法设置 Visual Studio 解决方案参数 以便它只创建预编译头而不构建整个解决方案 具体来说 它是一个巨大的 C 解决方案 本身有许多项目 谢谢 仅选择 pch 创建者源文件 通常是 stdafx cpp 然后编译该文件 C
  • 为什么像 BindingList 或 ObservableCollection 这样的类不是线程安全的?

    我一次又一次发现自己必须编写 BindingList 和 ObservableCollection 的线程安全版本 因为当绑定到 UI 时 这些控件无法从多个线程更改 我想理解的是why情况就是这样 这是设计错误还是故意的 问题是设计一个线
  • 在 .NET Core 中从 HttpResponseMessage 转换为 IActionResult

    我正在将之前在 NET Framework 中编写的一些代码移植到 NET Core 我有这样的事情 HttpResponseMessage result await client SendAync request if result St
  • 为什么 BinaryFormatter 可以序列化 Action<> 但 Json.net 不能

    尝试序列化 反序列化 Action 尝试我的 1天真 JsonConvert SerializeObject myAction JsonConvert Deserialize
  • 使用 dateTimePicker 在 DataGridView 中编辑日期

    我有一个DateTime我的 WinForms 中的专栏DataGridView 目前只能通过手动输入日期来编辑该字段 例如 2010 09 02 需要什么才能拥有一个DateTimePicker 或同等 用作编辑器 DataGridVie
  • 如何禁用基于 ValidationRule 类的按钮?

    如何禁用基于 ValidationRule 类的 WPF 按钮 下面的代码可以很好地突出显示 TextBox
  • 使用 cmake 将两种解决方案合二为一

    我有两个单独的 Visual Studio 2013 解决方案 我想将它们迁移到一个解决方案中 因为第一个解决方案 使用 Qt 充当第二个解决方案的 GUI 最后 我希望有一个结构如下的单一解决方案 Solution All Build P
  • 应在堆栈上分配的最大数量

    我一直在寻找堆栈溢出有关应在堆栈上分配的最大内存量的指南 我看到了堆栈与堆分配的最佳实践 但没有关于应该在堆栈上分配多少以及应该在堆上分配多少的指南 有什么想法 数字可以作为指导吗 什么时候应该在堆栈上分配 什么时候应该在堆上分配 多少才算
  • 从具有相同属性的另一个对象创建对象

    我有一个 C 对象 可以说有 20 个属性 它是数据契约的一部分 我还有另一个具有类似属性的业务实体 我想从响应对象中填充该实体 除了将一个对象的每个属性分配给另一个对象的相应属性之外 还有其他方法可以做到这一点吗 是的 看看自动映射器 h
  • 意外的 const 引用行为

    include
  • 在特定线程上运行工作

    我想要一个特定的线程 任务队列并在该单独的线程中处理任务 应用程序将根据用户的使用情况创建任务并将其排队到任务队列中 然后单独的线程处理任务 即使队列为空 保持线程活动并使用它来处理排队任务也至关重要 我尝试过几种实现TaskSchedul
  • 'iter' 的名称查找已更改为新的 ISO 'for' 范围

    我正在尝试编译下面的两个文件 但从编译器收到错误消息 gcc 4 3 3 Linux 错误位于带有以下符号的行 LINE WITH ERROR 我做错了什么 我该怎么改变 路易斯 g c b h b cpp b cpp In functio
  • 检查一个数是否是完全平方数?

    我认为以下代码存在精度问题 bool isPerfectSquare long long n long long squareRootN long long sqrt n 0 5 return squareRootN squareRootN
  • Asp.Net Core 中的 SSL 不起作用

    我从 Visual Studio 创建了一个简单的 Web 应用程序Web Application Net Core 具有个人用户帐户授权的模板 然后 我启用了 SSLProject gt MyProject Properties 将带有
  • 创建进程默认浏览器

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 我想获取线程 id 因此 ShellExecute 无法获取线程 id 因此我开始使用

随机推荐

  • 选择最后插入 ID()

    有人可以解释一下 MySQL 函数 LAST INSERT ID 是如何工作的吗 我试图获取数据库中最后插入的行的 id 但每次都获取 1 我用的是mybatis 示例查询是
  • span内嵌套div问题

    div 是一个块元素 而 span 是一个内联元素 因此根据 xhtml 1 0 验证 这是不正确的 但仍然有几个网站使用这种方法进行样式设置 可以吗 或者它会引起一些问题请帮助我 这是不对的 你永远不需要这样做 gt 因此永远不应该
  • 如何在程序不做大改动的情况下实现undo/redo操作

    你好 我即将向我当前正在编写的应用程序添加新功能 我需要编写撤消 重做功能 然而 我们的应用程序 90 已经准备就绪 我不知道在不影响已创建的 太多 代码的情况下实现此功能的最佳方法是什么 这里没有太多细节 然而 撤消 重做功能通常是通过某
  • Angular - res.json() 不是函数

    我的 API 服务出现问题 该服务连接到我的 Nodejs 后端 api 错误说 ERROR TypeError res json is not a function 最近更新此服务以使用 HTTPClient 而不是 Http 后 我收到
  • 在 jenkins pipeline sh 步骤中使用嵌套命令替换

    我试图在归档之前使用指向相关内部文件夹的符号链接来展平结果目录 该文件夹首先遍历运行时确定的一堆变量路径名 我似乎不太能用我从这个SO中学到的命令替换方法来获得正确的语法answer 问题 是否存在我不知道的如何从 Jenkins 管道步骤
  • 引发事件(“onchange”)

    我有一个 winform 和一个WebBrowser控件 我正在更改选择 HTML 控件中的选项 webBrowser1 Document GetElementsByTagName select 4 GetElementsByTagName
  • HBITMAP 到 BITMAP 转换

    无法理解这段代码有什么问题 HBITMAP bm 0 BITMAP Bitmap bm HBITMAP LoadImage 0 path IMAGE BITMAP 0 0 LR LOADFROMFILE int error GetObjec
  • Mongodb 对象之间的关系

    我正在尝试使用 mongodb 实现博客文章存储 我有两个域实体 博客文章 和 作者 目前我已将 AuthorId 属性添加到博客文章实体中 这是存储对象之间关系的正确方法吗 我认为这篇文章适合你http www mongodb org d
  • 如何使用 CSS 在悬停时向图像添加工具提示

    我有三个图像 悬停时它们会使用 css 中的 hover 增加大小 当用户将鼠标悬停在图像上时 我还希望出现一个带有图像描述的工具提示 我还应该能够定位工具提示 HTML div class bottle container div cla
  • python calendar.HTMLCalendar

    我想我想使用 python 内置日历模块来创建带有数据的 HTML 日历 我说我认为是因为我可能会想出更好的方法 但现在这有点个人化 我不知道这是否是有意以这种方式使用的 但如果你不能至少让日子变得美好 那么这似乎有点毫无意义 a 这会设置
  • PHP 命名空间和 require

    我需要在主 index php 文件中包含几个文件 我正在使用命名空间 我可以使用 include require 并使文件使用与 index php 相同的命名空间 而不在每个包含的文件中指定命名空间和 use 语句吗 PHP 命名空间范
  • 在 TensorFlow 中对数组进行排序

    假设我在 TensorFlow 中有一个数组 0 12300211 0 51767069 0 13886075 0 55363625 0 47279349 0 50432992 0 48080254 0 51576483 0 8434793
  • 使用 Jasmine 监视没有对象的函数

    我正在使用 Jasmine 并且有一个库 js 文件 其中包含许多不与任何对象关联的函数 即全局函数 我该如何监视这些功能 我尝试使用窗口 文档作为对象 但即使调用该函数 间谍也无法工作 我还尝试将其包装在一个假对象中 如下所示 var f
  • 如何避免单击按钮时的 Page_Load() ?

    我有两个按钮 预览和保存 借助预览按钮 用户可以根据格式查看数据 然后保存 但是 当单击预览时 附加到 ajaxcontrol 日历 的一个文本框将变为空 用户必须在保存之前填写日期 这要怎么处理呢 在预览时单击我获取详细信息以在布局中显示
  • Python 中的按键

    Is it possible to make it appear to a system that a key was pressed for example I need to make A key be pressed thousand
  • 使用 hadoop 运行 jar 时 NoSuchMethodError Sets.newConcurrentHashSet()

    我在用着cassandra all 2 0 7api 与Hadoop 2 2 0
  • 使用zef安装模块后如何编辑模块中的源代码?

    例如 我已经安装了Cro模块 当我运行我的简单代码时 my headers Authorization gt OAuth realm oauth consumer key xxxxxxxxxxxxxxxx oauth nonce 29515
  • 将数组写入 csv python(一列)

    我正在尝试将数组的值写入 python 中的 csv 文件 但是当我在Excel中打开文件时 数据显示在一行中 我想要一列 其中数组的每个成员都是一行 数组 testLabels 的形式为 array deer airplane dog f
  • 如何在 Jekyll 标签插件中获取 Markdown 处理过的内容

    我正在为我的 Octopress 网站开发 Jekyll 标签插件 以帮助我制作 注释 元素 我只是希望能够在我的博客上突出显示一条信息作为旁注 就像这样 问题是 我不知道如何处理此标签的内容 即 Markdown 或 Textile 上面
  • c 中的外部和全局

    谁能告诉我使用有什么特殊要求吗EXTERN or GLOBALC 程序中的变量 如果我从 gloabl 更改为 extern 我看不出像下面这样的程序有任何区别 include