• 编译器工作过程


    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中

  • 相关阅读:
    docker删除容器再删除镜像
    centOS7安装docker遇到 [Errno 14] curl#35
    设置centos7界面语言为中文
    sublime查看项目代码多少行
    1. 常用及特殊
    7.逆波兰,二叉树三叉树
    6.表单提交,input键盘变搜索,有关自定义属性input操作
    5.字符串的第一次见到的方法
    2.手机上浏览器看控制台的插件
    1. 时间插件
  • 原文地址:https://www.cnblogs.com/wangtianning1223/p/12605695.html
Copyright © 2020-2023  润新知