zoukankan      html  css  js  c++  java
  • 编译链接 C++

    预处理之后的源文件被称为一个编译单位,也即编译器的工作对象。为了使编译能够进行,程序员必须提供各种程序其他部分的声明来孤立分析一个编译单位。所有名字空间,类,函数都应该在他们所在的编译单位中有声明,所有的声明都应当引自一个同一个实体(定义)--------------c++程序设计语言


    这样看来 步骤是这样的 每个编译单位独立的编译(依靠声明来得到程序其他部分的信息),之后进行链接

    这里有一些规则(如果一个名字可以在与其定义所在的编译单位不同的文件中使用,则称是可以外部链接)

    //static修饰函数和变量都是没有外部链接的
    //const修饰变量没有外部链接,但是加上了extern就开放了外部链接
    //const修饰返回值存在外部链接,(在返回值的前面,后面都一样)
    //inline修饰函数没有外部链接
    //typedef没有外部链接
    //没有外部链接会使得变量局限于一个编译单位,无名命名空间也可以达到切断外部链接的效果
    extern用来指定声明

    如extern int x;是指x的定义存在于其他的编译单位中

    如果我们写 extern int x=1;那这里就不仅仅是声明了,编译器就将其认定为一处定义(在其他的编译单位中存在另外的定义就会引起错误)


  • 相关阅读:
    java基础语法
    java 设计模式
    Mysql或者SQL Server数据库的运行机制和体系架构
    数据库中间件
    Spring的工作原理
    Hibernate和Mybatis的工作原理以及区别
    SpringMVC
    HTML学习笔记(八) Web Worker
    HTML学习笔记(七) Web Storage
    HTML学习笔记(六) 元素拖放
  • 原文地址:https://www.cnblogs.com/odin-luyu/p/5371770.html
Copyright © 2011-2022 走看看