所以,当我们做以下:
@H_301_1@#include <stdio.h>
与
@H_301_1@#include "myFile.h"编译器,GCC在我的情况下,知道stdio.h(甚至目标文件)在我的硬盘驱动器上的位置。它只是利用这些文件,没有我的互动。
我认为在我的Ubuntu Linux机器上的文件存储在/ usr / include /。编译器如何知道在哪里查找这些文件?这是可配置的还是这只是预期的默认值?我在哪里寻找这个配置?
因为我问这些包含文件的问题,什么是文件的来源?我知道这可能是模糊的在Linux社区,但谁管理这些?谁将为Windows编译器提供和管理相同的文件。
我总是受到印象,他们与编译器一起,但这是一个假设…
见这里:
Search Path
概要:
@H_301_1@#include <stdio.h>当包含文件在括号中时,预处理器首先在通过-I标志指定的路径中搜索。然后,它搜索标准包含路径(请参阅上面的链接,并使用-v标志在您的系统上测试)。
@H_301_1@#include "myFile.h"当include文件在引号中时,预处理器首先在当前目录中搜索,然后搜索由-iquote,然后是-I路径指定的路径,然后是标准路径。
-nostdinc可用于防止预处理器根本搜索标准路径。
Environment variables也可用于添加搜索路径。
在编译时,如果使用-v标志,您可以看到使用的搜索路径。