编译器如何知道在哪里可以找到#include

2024-03-16

我想知道 Mac OS X、Windows 和 Linux 上的编译器如何知道在哪里可以找到 C 头文件。

具体来说,我想知道它如何知道在哪里可以找到带有<>括号。

#include "/Users/Brock/Desktop/Myfile.h"    // absolute reference
#include <stdio.h>                         // system relative reference?

我假设它参考的系统上有一个文本文件。它如何知道在哪里寻找标头?是否可以修改此文件,如果可以,此文件驻留在操作系统的何处?


当编译器构建时,它知道一些寻找头文件的标准位置。其中一些与编译器的安装位置无关(例如 /usr/include、/usr/local/include 等),而另一些则基于编译器的安装位置(对于 gcc 来说,由--运行配置时的前缀选项)。

像 /usr/include 这样的位置是众所周知的,并且该位置的“知识”内置于 gcc 中。像 /usr/local/include 这样的位置并不被认为是完全标准的,可以在使用 configure 的 --with-local-prefix 选项构建 gcc 时进行设置。

也就是说,您可以使用编译器 -I 命令行选项添加新目录来搜索包含文件。当尝试包含文件时,它将在我在第一段中讨论的目录之前查找用 -I 标志指定的目录。

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

编译器如何知道在哪里可以找到#include ? 的相关文章

  • Nullable 是不可能的,为什么不呢? [复制]

    这个问题在这里已经有答案了 如果这是一个愚蠢的问题 请原谅 我正在尝试更好地理解 Net 中的 Nullable 类型 从我从 Microsoft 源代码 使用 ReSharper 中注意到的内容 我了解到 Nullable 是一个结构 而
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染
  • .pdbs 会减慢发布应用程序的速度吗?

    如果 dll 中包含 pdb 程序调试 文件 则行号将出现在引发的任何异常的堆栈跟踪中 这会影响应用程序的性能吗 这个问题与发布与调试 即优化 无关 这是关于拥有 pdb 文件的性能影响 每次抛出异常时都会读取 pdb 文件吗 加载程序集时
  • 类中是否可以有虚拟类声明?

    我正在为个人项目中框架的各个组件设置一个接口 我突然想到了一些我认为可能对接口有用的东西 我的问题是这是否可能 class a public virtual class test 0 class b public a public clas
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • 判断串口是普通COM还是SPP

    我正在寻找一种方法来确定 COM 是标准 COM 还是 SPP COM 也称为 COM 设备的电缆替换蓝牙适配器 我有一个可以在 USB COM gt USB 和蓝牙下工作的设备 并且蓝牙接口可以与 SPP 一起工作 我目前正在使用Syst
  • 提升mapped_file_source、对齐方式和页面大小

    我正在尝试在性能很重要的上下文中解析一些大小高达几百兆字节的文本文件 因此我使用 boostmapped file source 解析器期望源以空字节终止 因此我想检查文件大小是否是页面大小的精确倍数 如果是 则使用较慢的非内存映射方法 我
  • 如何设置消息队列的所有者?

    System Messaging MessageQueue 类不提供设置队列所有权的方法 如何以编程方式设置 MSMQ 消息队列的所有者 简短的答案是 p invoke 对 windows api 函数的调用MQSetQueueSecuri
  • MSChart 控件中的自定义 X/Y 网格线

    我有一个带有简单 2D 折线图的 C Windows 窗体 我想向其中添加自定义 X 或 Y 轴标记 并绘制自定义网格线 例如 以突出显示的颜色 虚线 我查看了 customLabels 属性 但这似乎覆盖了我仍然想显示的默认网格 这是为了
  • 在 mvc4 中创建通用 mvc 视图

    我以前也提过类似的问题 没有得到答案 如何创建一个通用的 mvc4 视图 该视图可以显示传递给它的模型列表或单个模型 模型可以是个人 组织或团体 无论传递给它的是什么 如果您正在寻找类似的东西 model MyViewModel
  • WPF DataGrid - 在每行末尾添加按钮

    我想在数据网格的每一行的末尾添加一个按钮 我找到了以下 xaml 但它将按钮添加到开头 有人知道如何在所有数据绑定列之后添加它吗 这会将按钮添加到开头而不是末尾
  • 如何测试某些代码在 C++ 中无法编译? [复制]

    这个问题在这里已经有答案了 可能的重复 单元测试编译时错误 https stackoverflow com questions 605915 unit test compile time error 我想知道是否可以编写一种单元测试来验证给
  • 不使用放置 new 返回的指针时的 C++ 严格别名

    这可能会导致未定义的行为吗 uint8 t storage 4 We assume storage is properly aligned here int32 t intPtr new void storage int32 t 4 I k
  • 值和类型的简洁双向静态 1:1 映射

    我将从我想象如何使用我想要创建的代码开始 它不必完全像这样 但它是我在标题中所说的 简洁 的一个很好的例子 就我而言 它是将类型映射到相关的枚举值 struct bar foo
  • MSVC编译器下使用最大成员初始化联合

    我正在尝试初始化一个LARGE INTEGER在 C 库中为 0 确切地说是 C 03 以前 初始化是 static LARGE INTEGER freq 0 在 MinGW 下它产生了一个警告 缺少成员 LARGE INTEGER Hig
  • Unity,c++ 本机插件字节数组不匹配

    在我的 C 本机插件中 我有一个调用 vector
  • 如何知道 HTTP 请求标头值是否存在

    我确信这很简单 但是却让我感到厌烦 我在 Web 应用程序中使用了一个组件 它在 Web 请求期间通过添加标头 XYZComponent true 来标识自身 我遇到的问题是 如何在视图中检查此组件 以下内容不起作用 if Request
  • Emacs C++,打开相应的头文件

    我是 emacs 新手 我想知道 是否有在头文件 源文件和相应的源文件 头文件之间切换的快捷方式 是否有像通用 emacs 参考卡那样的参考卡 Thanks There s ff find other file 您可以使用以下方法将其绑定到
  • IDisposable 的显式实现

    虽然有很多关于IDisposable在 SO 上找到 我还没有找到答案 我通常遵循这样的做法 当我的一个班级拥有一个IDisposable对象然后它也实现IDisposable并打电话Dispose在拥有的对象上 然而最近我遇到了一个类 它
  • 是否可以使用 Dapper 流式传输大型 SQL Server 数据库结果集?

    我需要从数据库返回大约 500K 行 请不要问为什么 然后 我需要将这些结果保存为 XML 更紧急 并将该文件通过 ftp 传输到某个神奇的地方 我还需要转换结果集中的每一行 现在 这就是我正在做的事情 TOP 100结果 使用 Dappe

随机推荐

  • 如何从 SQL Server 数据库中删除所有外键?

    我想删除具有以下条件的所有外键 SELECT CONSTRAINT NAME FROM INFORMATION SCHEMA TABLE CONSTRAINTS WHERE TABLE NAME IN Table1 Table2 AND C
  • 如何在 CollapsingToolbarLayout 内滚动 Recyclerview

    我在 CollapsingToolbarLayout 中有 recyclerview 我希望它可以滚动 但事实并非如此 当我滚动时 appbar 正在滚动 但 recyclerview 却没有滚动 我尝试了不同的方法 但它不起作用 这是我的
  • C#:指定 Dll 引用的位置

    在C 控制台应用程序中 我们可以通过 解决方案资源管理器 引用 然后添加reqd dll的引用 来添加dll引用 在这种情况下 应用程序期望 dll 存在于同一文件夹中 如果没有 那么应用程序将无法工作 抛出异常 是否有可能 如果 dll
  • 对 -finstrument-functions 的未定义引用

    我正在尝试跟踪内核函数并且我正在使用 finstrument functions这样做 但我收到未定义的参考错误 如下所示 arch arm kernel elf c 9 undefined reference to cyg profile
  • 使用 PHP 打乱多个字符串值

    大家好 我每个问题有 4 个选项 每个字符串都带有冗长的句子 我的变量将类似于 option1 option2 option3 option4 我想像 3 2 1 4 一样随机排列这个变量顺序 或者类似地它会像随机一样随机排列函数 我以多种
  • 是否可以使用 npm / package.json 内的环境变量?

    我正在尝试构建一个 package json 以便在 Heroku 上运行 NodeJS 应用程序时 它将使用环境变量运行 script postinstall 步骤 例如 scripts postinstall command ENV V
  • Visual Studio 2017 无法打开源文件

    我是 C 新手 刚刚安装了 Visual Studio Community 2017 我不太知道要使用什么工作流程 所以我凭自己的直觉 当我尝试包括windows h using include
  • FontAwesome Icons 仅在鼠标悬停时旋转?

    在很棒的字体中 我如何使用此代码 i class fa fa spinner fa spin i 仅适用于鼠标悬停 您也可以创建另一个仅用于悬停的类 而不是覆盖该类 fa spin hover hover webkit animation
  • TypeScript 中的扩展如何工作?

    以下 TypeScript 代码 class BaseClassWithConstructor private id number constructor id number this id id class DerivedClassWit
  • 随机数,Math.floor(...) 与 Math.ceil(...)

    我见过很多生成随机数的代码 例如 random integers in the interval 1 10 Math floor Math random 10 1 无论如何 我感觉我失去了一些东西 为什么人们不使用更简洁的方式 Math c
  • 是否可以用符合特定条件的行号填充数组而不循环?

    我想用仅满足特定条件的行的行号填充VBA中的数组 我想要尽可能最快的方法 例如 类似RowArray index valRange valMatch row 下面是 慢速 范围循环的代码 Current Code Sub get row n
  • 构建带有递归函数的.so

    在处理一些项目期间 我遇到了无法构建so库的问题 我收到如下错误 创建共享对象时 不能使用针对符号 的重定位 R X86 64 PC32 使用 fPIC 重新编译最终我设法找到了根本原因 这是库中的递归函数 例如 我有以下众所周知的例子 s
  • Django Channels 错误:您不能在与异步事件循环相同的线程中使用 AsyncToSync

    我试图复制 Django Channels Documentation 中的教程 但我有错误 它说 您不能在与异步事件循环相同的线程中使用 AsyncToSync 只需直接等待异步函数 信息 WebSocket 握手 ws notifica
  • 与从 Cloud Console 创建的项目相比,从 App Engine 控制台创建的项目的功能较少

    当我从 App Engine 控制台创建新应用程序时https appengine google com https appengine google com 该应用程序也会出现在 Cloud Console 上https cloud go
  • 通过套接字获取线路

    是否有一个 libc 函数可以执行与 getline 相同的操作 但可以使用连接的套接字而不是 FILE 流 解决方法是在套接字上调用 fdopen 这样做的时候需要注意哪些事项 这样做 不这样做的理由是什么 这样做的一个明显原因是调用 g
  • 判断表单输入是否有焦点

    我正在 AngularJS 中进行验证 如果有 3 种类型的错误 我会显示一个 div 对于必需的 我只想在页面以空值提交时才显示错误消息 div class error div 对于正则表达式验证 我希望它标记实时的默认行为 div cl
  • jquery onclick 添加左边距

    我正在尝试用 JS 做一些非常简单的事情 但我无法让它工作 我想当点击div添加一个负数margin left到另一个div 但我希望每次点击时都会发生div 而不是像现在这样一次 每次我点击我的 next nav 我想要 nav移动自 1
  • 使用 Devise 注销所有用户

    我在 ruby on rails 应用程序中使用 devise 我有一个使用设备的 User 类和 AdminUser 类 在我的管理面板中 我想注销所有用户 但不注销管理员用户 执行此操作的最佳方法是使用范围级别的注销方法 因此 如果您想
  • TransactionAttribute 注释 (@REQUIRES_NEW) 被忽略

    我遇到了两个单独的事务的问题 这些事务以与实际执行的顺序相反的顺序刷新到数据库 这是业务案例 存在 RemoteJob RemoteJobEvent 一对多关系 每次创建新事件时 都会获取一个时间戳 并将其设置在RemoteJob和Remo
  • 编译器如何知道在哪里可以找到#include

    我想知道 Mac OS X Windows 和 Linux 上的编译器如何知道在哪里可以找到 C 头文件 具体来说 我想知道它如何知道在哪里可以找到带有 lt gt 括号 include Users Brock Desktop Myfile