gpt4 book ai didi

c++ - cpp预处理器如何从子目录中获取 header

转载 作者:行者123 更新时间:2023-11-30 03:50:29 26 4
gpt4 key购买 nike

我想以免责声明开始我的问题,即我是 c++ 初学者。

我的问题是预处理器如何知道在查找头文件时要查找哪些目录。

我知道它会搜索一些特定的预定义位置以及我们在 g++ 编译步骤中作为 -I 传递的任何内容。然而,让我感到困惑的是,即使它们不在这些位置,也会拾取一些标准 header 。

我在 Finding out what the GCC include path is 提到了这个问题我按照那里的步骤操作。

$ /usr/include % echo | cpp -Wp,-v 
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.9/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "<stdin>"

但我试图找到 iostream 并且我看到了

$ locate iostream
/usr/include/c++/4.8/iostream

它位于 /usr/include/c++/4.8/iostream , 但搜索路径结束于 /usr/include .如果它是任何其他头文件,我将不得不将其包含为 #include <c++/4.8/iostream> , 但在我使用的所有程序中 #include <iostream> .

PS:我问这个问题是因为我不小心删除了/usr/include/c++/4.9目录,它曾经在删除之前工作。但它没有接收 usr/include/c++/4.8/cstddef .我想了解获取 C++ 预处理器正确包含路径的过程。

谢谢

最佳答案

它们是编译进去的。确保您指定了正确的语言。

$ echo | cpp -Wp,-v -x c++
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../x86_64-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/x86_64-redhat-linux
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/backward
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include
/usr/local/include
/usr/include
End of search list.
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "<stdin>"

关于c++ - cpp预处理器如何从子目录中获取 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31752774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com