G++;查找我不知道的标题';你没有吗? 我是C++新手,想了解它是如何找到标题的。最初我只是想找出哪些类可以包含在源代码中。我相信不同的编译器将使用不同的include目录,因此类的可用性将有所不同。我的计划是找到编译器正在使用的“include”目录,并假设我可以在那里包含任何内容。所以,我只是越来越困惑,因为我去 首先,我在代码中编写C++代码::在Windows 7上的块。IDE被设置为使用GNU GCC进行编译,我了解到它意味着它使用C++编译器来编写C++代码。我在这里找到了我的编译器:C:\MinGW\bin\mingw32-g++.exe,代码::Blocks设置指向这个
所以我假设G++必须递归地使用C:\MinGW\include来查找它的所有头文件。为了验证我的理论,我搜索了“iostream.h”。令我惊讶的是,我的C驱动器上甚至没有“iostream.h”。尽管如此,我的代码在包含它时仍能编译并工作 所以我的问题是: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
\include
中列出的文件之外,还有其他目录。在那里你可以找到没有分机的。您可能有一个c++
文件夹,其中包含这些文件,但即使使用Windows 7搜索从CodeBlocks目录中搜索它们,也会显示它们的位置\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,它们就不是标准的标题