G++;查找我不知道的标题';你没有吗? 我是C++新手,想了解它是如何找到标题的。最初我只是想找出哪些类可以包含在源代码中。我相信不同的编译器将使用不同的include目录,因此类的可用性将有所不同。我的计划是找到编译器正在使用的“include”目录,并假设我可以在那里包含任何内容。所以,我只是越来越困惑,因为我去 首先,我在代码中编写C++代码::在Windows 7上的块。IDE被设置为使用GNU GCC进行编译,我了解到它意味着它使用C++编译器来编写C++代码。我在这里找到了我的编译器:C:\MinGW\bin\mingw32-g++.exe,代码::Blocks设置指向这个

G++;查找我不知道的标题';你没有吗? 我是C++新手,想了解它是如何找到标题的。最初我只是想找出哪些类可以包含在源代码中。我相信不同的编译器将使用不同的include目录,因此类的可用性将有所不同。我的计划是找到编译器正在使用的“include”目录,并假设我可以在那里包含任何内容。所以,我只是越来越困惑,因为我去 首先,我在代码中编写C++代码::在Windows 7上的块。IDE被设置为使用GNU GCC进行编译,我了解到它意味着它使用C++编译器来编写C++代码。我在这里找到了我的编译器:C:\MinGW\bin\mingw32-g++.exe,代码::Blocks设置指向这个,c++,header,g++,codeblocks,C++,Header,G++,Codeblocks,所以我假设G++必须递归地使用C:\MinGW\include来查找它的所有头文件。为了验证我的理论,我搜索了“iostream.h”。令我惊讶的是,我的C驱动器上甚至没有“iostream.h”。尽管如此,我的代码在包含它时仍能编译并工作 所以我的问题是: 当我的硬盘甚至没有iostream头时,G++是如何找到它的 所有的标准C++头(如这里列出的)都可以对所有C++编译器都可用吗?使用相同的确切名称,这样我就不必更改源代码了 使用引号将搜索当前目录,然后移动到用尖括号搜索的目录。除了\in

所以我假设G++必须递归地使用C:\MinGW\include来查找它的所有头文件。为了验证我的理论,我搜索了“iostream.h”。令我惊讶的是,我的C驱动器上甚至没有“iostream.h”。尽管如此,我的代码在包含它时仍能编译并工作

所以我的问题是:

  • 当我的硬盘甚至没有iostream头时,G++是如何找到它的

  • 所有的标准C++头(如这里列出的)都可以对所有C++编译器都可用吗?使用相同的确切名称,这样我就不必更改源代码了

  • 使用引号将搜索当前目录,然后移动到用尖括号搜索的目录。除了
    \include
    中列出的文件之外,还有其他目录。在那里你可以找到没有分机的。您可能有一个
    c++
    文件夹,其中包含这些文件,但即使使用Windows 7搜索从CodeBlocks目录中搜索它们,也会显示它们的位置

  • 是的,它们都应该可以使用相同的名称访问,使用尖括号来访问它们。当然,总有一小部分人可能会失踪。如果是这样的话,那么从第一眼看,这种实现似乎非常不可靠。今天所有主要的编译器都应该坚持这一点

  • 要将您自己的标题与其中的类一起使用,它们应该与主cpp文件位于同一目录中,并且您应该使用Quotence includes

  • 使用引号将搜索当前目录,然后移动到用尖括号搜索的目录。除了
    \include
    中列出的文件之外,还有其他目录。在那里你可以找到没有分机的。您可能有一个
    c++
    文件夹,其中包含这些文件,但即使使用Windows 7搜索从CodeBlocks目录中搜索它们,也会显示它们的位置

  • 是的,它们都应该可以使用相同的名称访问,使用尖括号来访问它们。当然,总有一小部分人可能会失踪。如果是这样的话,那么从第一眼看,这种实现似乎非常不可靠。今天所有主要的编译器都应该坚持这一点


  • 要将您自己的标题与其中的类一起使用,它们应该与主cpp文件位于同一目录中,并且您应该使用Quotence includes

    答案1:我使用Code::Blocks的时间很短,但我记得在Dev-C++和MSVC++中,标题都在IDE的目录中。(例如,我的MSVC++include目录位于C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\include中,其中包含iostream文件。)

    答2:最常见的头文件位于最常见的IDE/编译器集中


    提示:你的意思不是“iostream”而不是“iostream.h”?

    回答1:我使用Code::Blocks的时间很短,但我记得在Dev-C++和MSVC++中,标题在IDE的目录中。(例如,我的MSVC++include目录位于C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\include中,其中包含iostream文件。)

    答2:最常见的头文件位于最常见的IDE/编译器集中


    提示:您的意思是“iostream”而不是“iostream.h”?

    关于第二个问题,标准不要求标题作为文件提供。它要求
    #include
    指令出现在程序中,编译器的行为就像程序中出现了所需标准的声明一样。但是编译器可以自由地以它认为合适的任何方式注入声明

    也就是说,特别是g++确实有备份每个头的文件。在不知道您的特定配置的情况下,我无法告诉您标头将位于何处,但您可以在预处理器之后停止编译过程并检查输出:

    $ cat test.cpp
    #include <iostream>
    int main() {
       std::cout << "Hi\n";
    }
    $ g++ -E test.cpp | head -10
    # 1 "test.cpp"
    # 1 "<built-in>"
    # 1 "<command-line>"
    # 1 "test.cpp"
    # 1 "/usr/include/c++/4.2.1/iostream" 1 3
    # 42 "/usr/include/c++/4.2.1/iostream" 3
    
    # 43 "/usr/include/c++/4.2.1/iostream" 3
    
    $cat test.cpp
    #包括
    int main(){
    
    std::cout关于第二个问题,该标准不要求头作为文件可用。它要求程序中存在
    #include
    指令,编译器的行为就像程序中存在所需标准的声明一样。但是编译器可以自由地将声明插入程序中任何它认为合适的方式

    也就是说,g++确实有文件备份每个头文件。在不知道您的特定配置的情况下,我无法告诉您头文件的位置,但您可以在预处理器之后停止编译过程并检查输出:

    $ cat test.cpp
    #include <iostream>
    int main() {
       std::cout << "Hi\n";
    }
    $ g++ -E test.cpp | head -10
    # 1 "test.cpp"
    # 1 "<built-in>"
    # 1 "<command-line>"
    # 1 "test.cpp"
    # 1 "/usr/include/c++/4.2.1/iostream" 1 3
    # 42 "/usr/include/c++/4.2.1/iostream" 3
    
    # 43 "/usr/include/c++/4.2.1/iostream" 3
    
    $cat test.cpp
    #包括
    int main(){
    STD::CUT< P > 1)你找不到IoSoo流传的原因。H没有这样的标题,它在标准C++中拼写为代码> IoSturis/Cuff>。如果你尝试<代码>包含< /代码>,它将失败,所以它找不到你没有的标题:)/P>
    如果运行
    g++-v test.cpp
    ,它将显示编译
    test.cpp

    2) 是的,如果它们丢失或有不同的名称dependi,它们就不是标准的标题