zoukankan      html  css  js  c++  java
  • 编译器工作过程

    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中

  • 相关阅读:
    好看的壁纸网站
    python简介
    python学习之基本语法(1)
    信息系统开发方法
    数据库连接池的使用小结
    软件版本后的字母含义
    信息系统与信息化
    软考
    实施过程中的项目管理
    mysql查SQL执行速度
  • 原文地址:https://www.cnblogs.com/wangtianning1223/p/12605695.html
Copyright © 2011-2022 走看看