我想知道 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(使用前将#替换为@)