上次我讲了ms 的nmake命令来进行编译多个cpp文件。这次我想一步步的自己来,不再通过makefile的帮助。
首先注意以下几点:
1、#include指令的机制就是讲.h文件中的内容复制到.cpp文件中,所以你只需要编译cpp文件。h文件只是一个陪衬。另外注意.h中的声明语句一定要记得在最后加上分号表示结束,否则编译程序会报错。你可以把h文件省去而直接加到cpp文件中,但是在之后的每一个文件中你就需要重写该类或者函数的声明。所以这也是h文件存在的原因。
2、你可以通过cl -c命令来编译类文件,编译成obj文件后,你可以使用lib命令将其编译为lib文件。然后使用link命令连接多个obj文件。默认生成的可执行文件的名称是命令中第一个obj文件的名称。
看我的例子
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include<iostream>
class A{
public:
int a;
int b;
void say();
};
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/**
class A{
public:
int a;
int b;
void say();
};
*/
#include "A.h"
void A::say(){
a = b;
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//#include<iostream>
#include "A.h"
using namespace std;
int main(){
A a;
a.a = 0;
a.b = 9;
a.say();
cout<<a.a<<" "<<a.b<<endl;
}
这里有一个问题我想强调一下。很多同学可能多#include的多重包含不在意。其实#include只是一个复制机制。你可以在A的h文件中直接把iostream给包含了,那么在main中你就没有必要再去包含一次。这或许是很多同学不在意的吧。
本文详细介绍了C++编译过程中如何通过cl-c命令编译类文件,生成obj文件,进而链接多个obj文件形成可执行文件的过程。特别强调了避免多重包含的注意事项,以提高代码效率。
4350

被折叠的 条评论
为什么被折叠?



