我看过(和使用过)这样的情况:
在header.h中:
class point
{
public:
point(xpos, ypos);
int x;
int y;
};
Run Code Online (Sandbox Code Playgroud)
在def.cpp中:
#include"header.h"
point::point(xpos, ypos)
{
x = xpos;
y = ypos;
}
Run Code Online (Sandbox Code Playgroud)
在main.cpp中:
#include"header.h"
int main()
{
point p1(5,6);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道程序是从main执行的,但编译器如何知道编译.cpp文件的顺序是什么?(特别是如果有多个非主.cpp文件).
Ric*_*dle 10
该编译器不关心-它编译每个cpp文件到obj文件和.obj文件都包含缺少的符号列表.所以在这种情况下,main.obj说"我很想念point::point".
然后链接器的工作是获取所有.obj文件,将它们组合成一个可执行文件,并确保每个.obj文件的缺失符号都可以从其他.obj文件中获得 - 因此称为"链接器".