C++声明和定义
1、对于函数
编译器只需要声明【函数名、参数、返回信息等】,而链接器则需要函数的具体定义【具体实现,即body】!
Log.cpp
void Log(const char *message); //告诉编译器Log函数存在,到时候自己去找
void InitLog(){
Log("Init log");
}
Main.cpp
void Log(const char* message){
std::cout<<message<<std::endl;
}
int main(){
Log("hello,world");
}
如果我想在另外的cpp文件中也使用Log,怎么办呢?答案是继续声明Log
B.cpp
void Log(const char* message);
void TestLog(){
Log("hello");
}
很显然,每次都这样对函数进行申明好麻烦的,所以就引出了头文件!我们结合#include命令可以知道,#include就是把.h文件的内容进行展开,恰好这就是我们需要的效果。我们在头文件里面进行函数或者类的申明,这样编译器就知道XXX函数或类存在并且在某个cpp里面实现了,去哪里找就是连接器的工作了。
2、对于变量
声明:
- 一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
- 另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。
定义:为了给变量分配内存,为变量赋初值
...