【问题标题】:how to view #include with <> directories如何使用 <> 目录查看#include
【发布时间】:2014-02-24 19:19:54
【问题描述】:

我知道当使用#include &lt;file&gt; 时,编译器将在定义的系统目录中搜索file。如何查看这些目录?

我问是因为我在 /usr/local/include 中添加了一个包含一堆头文件的目录,当我 #include &lt;file&gt; 时,编译器仍然显示 error: unknown type name ‘TPM_TAG’。我怀疑 /usr/local/include 不在编译器要搜索的目录列表中。

谢谢!

【问题讨论】:

  • 如果没有找到文件,你会遇到致命错误,所以这不是问题
  • 您可以使用-I 标志来传递包含目录。
  • 他可能在 /usr/include 中还有一个头文件的实例,在 /usr/local/include 中还有一个更新的版本。
  • 这取决于您使用的编译器。使用 gcc,gcc -v 应该会告诉你它在哪里寻找。
  • 我有一个目录,里面装满了我想在我的项目中使用的头文件。这些头文件假定它们位于 gcc 识别的目录中(因为它们用#include &lt;file&gt; 相互包含)。所以我把这个目录放在/usr/local/include 中,并将它们包含在#include&lt;file&gt; 中,我得到unknown type name 错误。我尝试删除我的#include 语句以查看会发生什么,但我得到了同样的错误。这让我觉得编译器没有在 /usr/local/include 中找到头文件的目录。 @KeithThompson,该输出的哪个选项提供目录?

标签: c include-path


【解决方案1】:

您可以根据编译器以不同的方式进行搜索,例如使用 gcc 可以检查编译器在哪里查找文件

gcc -print-search-dirs

或者您可以使用选项gcc -H 编译您的c 文件,例如使用gcc -H -c myfile.c

【讨论】:

    【解决方案2】:

    这取决于您使用的是标准标头还是本地、用户定义的标头。也许尝试使用#include“file”并将头文件改为本地,看看是否有效?

    【讨论】:

      【解决方案3】:
      gcc -I. yourfile.c 
      

      -I 引入include files 的路径,所以如果你的子目录中有一些包含文件,例如 sort/list/ 等,你应该表现如下:

      gcc -I. -I./list -I./sort myfile.c
      

      注意: 请考虑使用""作为您的头文件,使用&lt;&gt;作为系统头文件。例如:

      #include <iostream>
      #include "myheader.h"
      

      【讨论】:

      • 他不是在问如何包含某些文件,而是在使用#include &lt;file&gt; 指令包含文件时如何查看编译器正在搜索的目录
      【解决方案4】:

      编译器附带大量 *.h 文件,这些文件取决于其确切配置。也看看这个question。说服 GCC/clang 承认的一般方法是:

      echo | gcc -E -Wp,-v -
      

      (根据需要将gcc 替换为clang)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-12
        • 2015-11-22
        相关资源
        最近更新 更多