包括哪个 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 环境变量将目录添加到搜索路径