【发布时间】:2020-12-10 17:20:06
【问题描述】:
在C++中使用多个文件时,例如:main.cpp、definition.cpp、declaration.h强>
// declaration.h
int Myfunc();
//definition.cpp
#include "declaration.h"
int MyFunc() {return 5;};
// main.cpp
#include <iostream>
#include "declaration.h"
int main()
{
std::cout << Myfunc() << std::endl;
}
为什么我不需要在主文件中包含定义文件? 我只包含了声明,程序怎么知道Myfunc()的定义?
【问题讨论】:
-
你是如何编译程序的?是否有任何类型的配置文件,或者这是一个 Visual Studio 项目?
-
该定义包含在构建过程的链接步骤中的可执行文件中。见,例如stackoverflow.com/q/6264249/9988487 了解更多详情。
-
这是Linker的责任。
-
我认为second answer 解释了您的问题。
-
因为下一阶段:“链接”。通常会发生什么:编译完成
definition.cpp => definition.o和main.cpp => main.o然后我们将目标文件链接到可执行文件中:main.o + definition.o => application
标签: c++ c++11 file-handling