• 编译链接 C++


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


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

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

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

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

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


  • 相关阅读:
    B
    给定二叉树先序、中序遍历序列,求后序遍历
    24点游戏dfs求解
    设计模式之单例模式
    生产者—消费者模式示例
    LeetCode(3):Longest Substring Without Repeating Characters
    LeetCode(5):Longest Palindromic Substring
    LeetCode(60):Permutation Sequence
    LeetCode(50):Pow(x,n)
    LeetCode(69):Sqrt(x)
  • 原文地址:https://www.cnblogs.com/odin-luyu/p/5371770.html
Copyright © 2020-2023  润新知