编译器工作过程
c++文档从代码到生成程序经过编译和链接两个阶段
其中编译是将文本文件转化为.obj文件
编译过程经过 1.预处理 2.标记解释 3.解析
main.cpp
#include<iostream> void Log(const char* message); int main() { Log("Hello world!"); std::cin.get(); }
Log.cpp
#include<iostream> void Log(const char* message) { std::cout<<message<<endl; }
Math.cpp
int Multiply(int a,int b) { int result=a*b; return result; }
生成解决方案后可以在Debug文件夹下看见对应的.obj文件
obj文件由cpp中的代码和include导入的其他文件按c++规则编译而成
main.cpp,Log.cpp文件大小为40多k,而Math大小为4k,因为Math.cpp没有include其他东西
在预处理时,include打开引用文件,读取引用文件,然后将文件中的所有内容粘贴进当前的cpp
如果将Log.cpp去掉大括号
#include<iostream> void Log(const char* message) { std::cout<<message<<endl;
那么在编译时会报错,提示缺少括号。如果我们新建一个EndBrace.h其中只包含一个“}”,然后再Log.cpp中include它,程序则正确运行
#include<iostream> void Log(const char* message) { std::cout<<message<<endl; #include“EndBrace”
ctrl+F7是单独编译的快捷键,预处理的作用就是打开头文件,然后将头文件的内容粘贴到当前cpp中
无情的摸鱼机器