【发布时间】:2016-10-17 21:32:43
【问题描述】:
我是一名 C++ 学习者,我遇到了将代码分成多个文件以加快大型项目的编译过程的概念。
但是这本书没有告诉我什么,我试图在其他书籍和网络上找到它,但没有运气的是链接器(在编译期间)如何知道要包含哪些文件。
当我创建新文件时,我用#include "newfile.h" 将它的头文件连接到主文件,但是在这个头文件中我没有写在哪里可以找到函数的定义。
所以我想象的过程是它从主文件开始,并在那里找到与其他文件的“连接”。问题是它如何找到那些据我所知不需要与其头文件命名相同的 .cpp 文件。
示例:
主文件:
#include <iostream>
#include "krneki_H.h"
using namespace std;
int main()
{
krneki1();
krneki2();
krneki3();
}
以及头文件:
void krneki1();
void krneki2();
void krneki3();
还有新的 .cpp 文件:
#include <iostream>
#include "krneki_H.h"
using namespace std;
void krneki1() {
cout<<"Krneki1"<<endl;}
void krneki2() {
cout<<"Krneki2"<<endl;}
void krneki3() {
cout<<"Krneki3"<<endl;}
请注意,没有指示使用第二个 cpp 文件。它只知道使用它。它会搜索地图中的所有 .cpp 文件吗?
谢谢你的回答。
【问题讨论】:
-
不要垃圾标签! C 是一种不同的语言!
-
它什么都不知道。你告诉它哪些文件要链接在一起。
-
链接器根本不使用源代码。程序员必须告诉链接器它需要哪些文件,但它们是编译后的二进制文件,而不是
.cpp或.h文件.. -
我自己也想过这个问题。据我了解,您指定目录中的所有 .cpp 文件都已编译(编译单元)。
#include指令包括标题中的文件,就好像您在该行键入它们一样。最后,链接器链接函数调用并寻找main作为第一条指令。
标签: c++ compilation linker