包括哪个 unistd.h? (c++)
Which unistd.h is being included? (c++)
我出于教育目的探索图书馆并发现了文件 os_defines.h ,它在我的 MacBoook 上位于 usr/include/c++/4.2.1/bits 。在那里我找到了 #include <unistd.h>
,所以我快速搜索了该文件并找到了不少于 7 个同名文件!这些文件不是副本,其中 NONE 与 os_defines.h 位于同一文件夹中 - 那么究竟包含了哪个文件?
我觉得我遗漏了一些明显的东西,但我是一个菜鸟,如果有人能给我点亮,我将不胜感激。
好吧,我们无法在 SE 站点之间标记重复项(我无法在 Stack Overflow 上快速找到),假设您使用的是 GCC,我将在此处重申 answer:
The preprocessor can tell you what it uses
cpp -x c++ -v
...
#include "..." search starts here:
#include <...> search starts here:
/usr/include/c++/4.4
/usr/include/c++/4.4/i486-linux-gnu
/usr/include/c++/4.4/backward
/usr/local/include
/usr/lib/gcc/i486-linux-gnu/4.4.1/include
/usr/lib/gcc/i486-linux-gnu/4.4.1/include-fixed
/usr/include/i486-linux-gnu
/usr/include
End of search list.
您可以通过设置 C_INCLUDE_PATH
and/or CPLUS_INCLUDE_PATH
环境变量将目录添加到搜索路径
我出于教育目的探索图书馆并发现了文件 os_defines.h ,它在我的 MacBoook 上位于 usr/include/c++/4.2.1/bits 。在那里我找到了 #include <unistd.h>
,所以我快速搜索了该文件并找到了不少于 7 个同名文件!这些文件不是副本,其中 NONE 与 os_defines.h 位于同一文件夹中 - 那么究竟包含了哪个文件?
我觉得我遗漏了一些明显的东西,但我是一个菜鸟,如果有人能给我点亮,我将不胜感激。
好吧,我们无法在 SE 站点之间标记重复项(我无法在 Stack Overflow 上快速找到),假设您使用的是 GCC,我将在此处重申 answer:
The preprocessor can tell you what it uses
cpp -x c++ -v
...
#include "..." search starts here: #include <...> search starts here: /usr/include/c++/4.4 /usr/include/c++/4.4/i486-linux-gnu /usr/include/c++/4.4/backward /usr/local/include /usr/lib/gcc/i486-linux-gnu/4.4.1/include /usr/lib/gcc/i486-linux-gnu/4.4.1/include-fixed /usr/include/i486-linux-gnu /usr/include End of search list.
您可以通过设置 C_INCLUDE_PATH
and/or CPLUS_INCLUDE_PATH
环境变量将目录添加到搜索路径