C 中的外部链接

2023-12-05

K&R 说:

默认情况下,外部变量和函数具有以下属性:所有以相同名称对它们的引用,即使是单独编译的函数,也是对同一事物的引用

请解释一下这是什么意思,我不明白


考虑两个函数:

extern int extern_sqr(int i) { return i * i; }
static int static_dbl(int i) { return i * 2; }

那么参考的人extern_sqr将引用该函数。这是反对static链接,只有来自“翻译单元”(大致是其定义的文件)内的人员才能访问该功能static_dbl.

事实证明,extern在c中默认隐含。因此,如果您编写以下内容,您会得到相同的行为:

int extern_sqr(int i) { return i * i; }

较新的 C 标准仍然需要“函数声明”,因此,通常在头文件中的某个位置,您会遇到:

int extern_sqr(int i);  // Note: 'i' is optional

其中说“在其他翻译单元的某个地方,我有一个名为extern_sqr.

同样的逻辑也适用于变量。

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

C 中的外部链接 的相关文章

  • 向进度条添加百分比文本 C#

    我有一个方法可以显示进程栏何时正在执行以及何时成功完成 我工作得很好 但我想添加一个百分比 如果完成 则显示 100 如果卡在某个地方 则显示更少 我在网上做了一些研究 但我无法适应我正在寻找的解决方案 这是我的代码 private voi
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 使用 std::packaged_task/std::exception_ptr 时,线程清理程序报告数据争用

    我遇到了线程清理程序 TSan 的一些问题 抱怨某些生产代码中的数据争用 其中 std packaged task 通过将它们包装在 std function 中而移交给调度程序线程 对于这个问题 我简化了它在生产中的作用 同时触发 TSa
  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的

随机推荐

  • 您将如何找到该算法的复杂性?

    function alg1 n 1 a 0 2 for o 1 to n do 3 for t 1 to o do 4 for k t to o t do 5 a a 1 6 return a 如果有人能指导我如何找到最坏的情况 以及如何获
  • WiFiDirectActivity 是什么/在哪里

    我正在尝试理解并实现 中描述的 不完整 代码 使用 Wi Fi 创建 P2P 连接 这是作为一个单独的类添加到我现有的活动中 示例代码中有一行如下 activity setIsWifiP2pEnabled true 但没有显示变量 acti
  • Rails 和 Heroku PGError:其中参数不存在列

    我四处搜索并发现了一些类似的搜索 但没有一个真正详细说明了我遇到的问题 所以我想我应该分享我的发现 Problem当将 Ruby on Rails 项目推送到 Heroku 时 数据库 PostgresQL 我收到了一些在开发环境中没有收到
  • 如何从indexedDB获取对象存储?

    我在我的应用程序上有用于网络存储的indexedDb 我想通过以下代码获取商店 var store myapp indexedDB db transaction tree nodes readwrite objectStore tree n
  • MVC 开始集合项

    我在将部分视图 BeginCollectionItem 保存到数据库时遇到一些问题 我有一个表单 其中包含可以添加到页面的动态数量的 部分 并且在每个字段中都有一个文本框 用户可以在其中输入部分名称 据我所知 部分视图中的 BeginCol
  • 如何确定 javascript 模块是否通过脚本 src 导入或加载?

    假设我有一个名为module js export default function greet console info hello Within module js 无论是在函数内部还是外部greet 如何确定模块是否已使用以下方式加载
  • 如何从另一个片段打开一个新片段?

    我尝试在片段之间进行导航 我有NewFragment java随着新片段的工作 我的问题是 我该怎么做这个onClickListener run NewFragment java正确吗 button setOnClickListener n
  • 如何使用 Retrofit-Android 记录请求和响应正文?

    我在 Retrofit API 中找不到用于记录完整请求 响应主体的相关方法 我 期望在探查器中得到一些帮助 但它只提供有关响应的元数据 我尝试在生成器中设置日志级别 但这也对我没有帮助 RestAdapter adapter new Re
  • Ajax 请求不是异步的

    我有一个ajax问题 foreach ids as id ajax url script php data id id cache false 如果我循环 6 次 在 foreach 循环中 我应该向服务器发出 6 个异步请求 但本例中的
  • 如何在sqlalchemy中按列表排序数据

    我有来自外部 postgresql 数据库的 ID 列表 A 1 2 3 4 5 6 7 98 0 我会使用 SQLAlchemy 对数据库进行查询 但我会按 A 列表对 postgresql 中的数据进行排序 我已经阅读了很多文档 但找不
  • RegExp 不区分大小写的多字突出显示

    我试图突出显示关键字搜索的正常工作 我遇到了几个问题 不区分大小写适用于第一个单词 但希望它替换为原始大小写单词 而不是小写搜索单词 即搜索趋势 它用趋势替换趋势 我知道为什么 但想弄清楚如何替换回找到的单词 而不是搜索到的单词 第二个单词
  • 错误:无法找到或加载主类 - 新手

    大家好 我是JAVA新手 尽管文件存在于我在路径中指定的位置 但我一直收到此文件未找到异常 最初我遇到了找不到文件的问题 但是 在执行清理并重新运行后 现在我遇到了一个问题 上面写着 错误 无法找到或加载主类 main main impor
  • Selenium WebDriver:使用 XPath 单击 SVG 中的元素

    我有一个带有一些圆形和矩形元素的 SVG 对象 使用 webdriver 我可以单击主 svg 对象 但不能单击其中的任何元素 问题似乎仅与单击 或任何鼠标交互 有关 因为我可以使用 getAttribute 为其下的任何内容返回宽度 ID
  • Postgres:不同但仅适用于一列

    我在 psql 上有一个带有名称的表 具有超过 1 个 mio 行 但我也有很多重复项 IN 选择 3 个字段 id name metadata 我想随机选择它们ORDER BY RANDOM and LIMIT 1000 所以我做了很多步
  • Heroku 上未处理delayed_job 队列

    我正在运行带有delayed job 的Rails 3 应用程序 我遇到的问题是 尽管应用程序正确地将作业添加到队列中 但它们从未被处理 My Class class User lt ActiveRecord Base after crea
  • 适用于 Chrome、Firefox、Safari 标准参考和工具的 Web 扩展(浏览器插件)(2021 年)

    据我记得我们今天使用的浏览器插件的正确名称实际上称为 Web 扩展 在每个浏览器都有自己的 API 之前 Chrome 和 Firefox 都同意 现在 Safari 2021 年将在 macOS 11 上推出 v14 看到 https d
  • fetch(PDO::FETCH_ASSOC 只返回一行

    从现在已弃用的 mysql 代码更改为 DO 该代码应该输出表中的所有值 这是代码 stmt pdo gt prepare SELECT FROM admin WHERE user id user id stmt gt bindParam
  • UITableViewController 以编程方式访问静态单元格问题

    假设我有一个包含 10 个静态单元格的表格 有没有办法以编程方式选择某个单元格 我试过这个 UITableViewCell cell self tableView subviews objectAtIndex indexPath row 但
  • PHP utf8_encode() 将空格转换为不间断空格[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 非常简单 utf8 encode string 用不间断空格 u00a0 替换常规空格 我尝试使用 str replace 过滤结果 str replace u00a0 utf8 enco
  • C 中的外部链接

    K R 说 默认情况下 外部变量和函数具有以下属性 所有以相同名称对它们的引用 即使是单独编译的函数 也是对同一事物的引用 请解释一下这是什么意思 我不明白 考虑两个函数 extern int extern sqr int i return