编译器工作过程

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中

 

原文链接: https://www.cnblogs.com/wangtianning1223/p/12605695.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    编译器工作过程

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/339030

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午11:53
下一篇 2023年3月1日 下午11:54

相关推荐