编译器工作过程

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中

 

posted @ 2020-03-31 15:48  Wangtn  阅读(154)  评论(0编辑  收藏  举报