C++包括.h包括同名的.cpp?

aar*_*ron 7 c++ compiler-construction compilation include

我有text.cpp,其中包括header.h和header.cpp,其中包括header.h.

header.cpp会被编译吗?我在这里跟踪指南,我很困惑.

另外,我要问的是什么是正确的术语?我知道我听起来像个白痴,我道歉,但我无知.

哦,int main()在test.cpp中.

另外,如果header.cpp包含<iostream>,为什么我不能在text.cpp中使用iostream函数调用(如果包含它)?如果我<iostream>在text.cpp中包含它将被包含在程序中两次(换句话说,膨胀它)?

Tho*_*ini 4

您告诉编译器要编译哪些 C++ 文件。#include与此无关。

例如,如果您使用 g++:

g++ text.cpp // Doesn't compile header.cpp
g++ text.cpp header.cpp // Compiles both

(or, alternatively you can compile one file at a time and then link them)
g++ text.cpp -o text.o
g++ header.cpp -o header.o
g++ text.o header.o -o your-program
Run Code Online (Sandbox Code Playgroud)

如果您使用 Visual Studio 并创建了一个项目,则您创建的所有 C++ 文件都将自动编译。

如果您两者都不使用,请告诉我您的编译器的名称,我可以告诉您确切的语法:)


现在,对于你的另一个问题:

另外,如果 header.cpp 包含 iostream,为什么我不能在包含 iostream 的 text.cpp 中使用 iostream 函数调用?如果我在text.cpp中包含iostream,它会被包含在程序中两次(换句话说,使其膨胀)吗?

#include告诉编译器简单地“复制您所包含的文件的所有内容,并将它们粘贴到 #include 行所在的位置”。所以,理论上,你可以简单地iostream用记事本打开,全选,ctrl-c和ctrl-v在你的.cpp文件中,最终效果将完全相同=)

因此,是的,您希望使用它的每个 .cpp 文件都需要包含它,并且它不会“膨胀”您的程序:它只包含类定义、外部函数等。

哦,这是不言而喻的,但 C++ 是一种非常非常广泛且困难的编程语言,通过书籍学习它比通过指南学习它要好得多。如果您不想花任何钱,一本不错的免费(可下载)C++ 书籍是Bruce Eckel 的《Thinking in C++》。否则,如果您想购买一个,您可以在这里找到一份不错的清单。