.c 文件中的 C99 内联函数

2024-03-31

我在 .c 中定义了我的函数(没有标头声明),如下所示:

inline int func(int i) {
 return i+1;
}

然后在下面的同一个文件中我使用它:

...
i = func(i);

在链接过程中,我得到了“对‘func’的未定义引用”。为什么?


The inlineC99 中的模型与大多数人想象的有点不同,特别是与 C++ 使用的模型不同

inline只是一个提示,这样编译器就不会抱怨双重定义的符号。它不保证函数是内联的,也不保证实际上生成符号(如果需要)。要强制生成符号,您必须添加某种实例化after the inline定义:

int func(int i);

通常你会有inline定义在头文件中,然后包含在多个 .c 文件(编译单元)中。并且您只能在其中一个编译单元中包含上述行。您可能只会看到您遇到的问题,因为您没有对编译器运行使用优化。

所以,你的用例有inline在 .c 文件中没有多大意义,最好使用static为此,甚至需要额外inline不会给你买太多东西。

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

.c 文件中的 C99 内联函数 的相关文章

  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • 是否可以强制 XMLWriter 将元素写入单引号中?

    这是我的代码 var ptFirstName tboxFirstName Text writer WriteAttributeString first ptFirstName 请注意 即使我使用 ptFirstName 也会以双引号结束 p
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • 如何在 Grails 中使用嵌入的 GORM 类?

    继GORM 文档 http grails org doc 2 2 0 guide GORM html gormComposition我尝试在 Grails 2 2 1 中使用以下域类 package grailscompositiontes
  • 如何在我的 React Native Android 应用程序中使用 Crashlytics?

    我正在尝试弄清楚如何在我的 React Native Android 应用程序中使用 Fabric 的 Crashlytics 我按照 Fabric 主页上的步骤操作 并在 build gradle 文件中添加了一些行 但构建总是崩溃 使用
  • Select_lated() 向后关系 - 自动模型总体

    如果我有以下模型 class Contact models Model name models CharField max length 100 class ContactAddress models Model line1 models
  • 如何以编程方式使用 NSTextFinder?

    我想在一个中进行 查找 操作NSTextView不使用内置查找栏 如何以编程方式设置搜索字符串并在文本视图中突出显示结果 这适用于 macOS 10 12 及更高版本 FWIW 这不是这个问题的重复 NSTextField 以编程方式设置搜
  • 使用 libavcodec 的 mpegts 容器中的原始 H264 帧

    我非常感谢对以下问题的帮助 我有一个带摄像头的小工具 可以生成 H264 压缩视频帧 这些帧将发送到我的应用程序 这些帧不在容器中 只是原始数据 我想用ffmpeg和libav函数创建一个视频文件 方便以后使用 如果我解码帧 然后对其进行编
  • pjsip 库中的 UnsatisfiedLinkError

    我构建 Pjsip 库并在 android studio 中使用它的示例 question 当我运行时出现此错误 我该如何解决它 提前致谢 例外 jsip pjsua2 app E AndroidRuntime 致命异常 main 进程 o
  • Perforce 遇到“文件不在客户端根目录下”错误消息

    我通过 VS2010 添加一个项目到 perforce 但我不断收到此错误 file not under client s root对于项目中的所有文件 我似乎无法弄清楚这一点 这是我正在做的事情 1 打开尚未执行的VS2010项目 2 我
  • 单元格背景视差就像 iOS7 天气应用程序中一样

    如果您查看 iPhone 上的 iOS 7 天气应用程序 您会发现当您滚动时 UITableViewCells 的背景也会滚动 每个都独立于其余部分 我正在尝试弄清楚它是如何完成的 有任何想法吗 答案是 void scrollTable U
  • Three.js:为 BufferGeometry 设置索引/索引的正确方法?

    我正在尝试在 BufferGeometry 中设置每个面的 UV 索引 我从几何开始 我的几何体的每个面都有一个face materialIndex对应于紫外线指数 我正在尝试将其转换为 BufferGeometry 然后映射到face m
  • 在 SELECT INTO 之前使用 SELECT COUNT(*) 是否比使用异常慢?

    My 最后一个问题 https stackoverflow com questions 18111127 is the use of the returning into clause faster than a separate sele
  • `typedef struct foo {int bar};` 的合法性

    这个问题源于这个问题是一个结构体 类型还是未命名变量 https stackoverflow com questions 31877661 is a struct a type or an unnamed variable 在这个问题中 O
  • 如何计算协方差矩阵

    这个问题似乎令人惊讶地晦涩难懂 我在将其发布到此处之前询问了谷歌 我发现的最接近答案的是 协方差矩阵计算 https stackoverflow com questions 3307082 covariance matrix computa
  • Haxe 编译器可以将任何 C# 代码转换为 Haxe 吗?

    首先 我对 Haxe 非常陌生 所以我在这里问超级菜鸟问题 我有两个问题 1 我的第一个问题是我知道Haxe编译器可以从Haxe转换为任何其他语言 支持 但是它可以将其他语言 支持 的源代码转换为Haxe吗 2 如果它能做到这一点 它的能力
  • 获取切换RadioButton用户值

    在我的javafx项目代码中是这样的 如何获取我需要的radioButton字符串值 但就像那样 我今天点击 输出是打印Today如此 Today 昨天 Duration 如何从这个输出group selectedTogglePropert
  • Django 应用程序是否可以知道用户的 Windows 域名?

    我需要制作一个简单的知识库类型应用程序以在公司内部网络中使用 为了使最终用户使用起来简单快捷 我想部分跳过所有登录 因为它只对我们信任的内部网络用户可见 并自动从用户中提取域用户名并放入它进入数据库 不希望人们浪费时间手动输入他们的名字 他
  • 如何强制win10打开虚拟平板键盘?

    我有一个需要虚拟键盘的应用程序 但是 当我点击我的一些TextBoxes 它们不会使虚拟键盘出现 我尝试过使用这个 System Diagnostics Process Start osk exe 但这会打开另一个键盘 该键盘在TextBo
  • 在 onBackStackChanged() 内调用时,SDK 25.1.0 在 CommitNow 上崩溃。谷歌错误?

    我有一个活动 有 2 个片段FragmentMainOne and FragmentMainTwo每当onBackStackChanged 叫做 public class MainActivity extends AppCompatActi
  • 当小部件包装在 InteractiveViewer 中时,Flutter onPanStart 会延迟调用

    我只有一个简单的容器 其右侧中心有一个调整大小手柄 这意味着可以使用该手柄调整容器的大小 它被包裹在里面InteractiveViewer widget import package flutter material dart import
  • 使用nested_form获取对象值

    我有一个嵌套表单 订单付款 我想在编辑视图中测试嵌套表单 fields for 中的值 但问题是我无法检查每个 我只能这样做 您现在是否可以检查每个 例如 如果我理解这个问题 那么您正在编辑订单并拥有fields for对于付款并想要获取与
  • .c 文件中的 C99 内联函数

    我在 c 中定义了我的函数 没有标头声明 如下所示 inline int func int i return i 1 然后在下面的同一个文件中我使用它 i func i 在链接过程中 我得到了 对 func 的未定义引用 为什么 The i