zoukankan      html  css  js  c++  java
  • 强弱符号关系

    定义与声明的关系,其实“强弱符号关系”。

    谁是强符号,谁是弱符号

    函数定义:强符号

    函数声明:弱符号

    初始化了的全局变量:强符号,我们常将这种称为定义

    未初始化的全局变量:弱符号,我们常将这种称为声明

    强弱符号的统一规则

    ①不能允许重复出现同名的强符号,但是允许重复出现有同名的弱符号

    在a.c中同时定义两个全局变量int a = 100,编译无法通过。

    在a.c中同时定义两个同名函数fun,也编译无法通过

    可以对全局变量和函数进行重复声明,因为声明是弱符号,允许同名弱符号重复。以前学C时老师总是讲,声明可以重复,原因就来自于这里。

    ②有一个强符号,其它都是弱符号的话,只保留强符号,其它弱符号消失

    同名符号的作用域以最前面的那个符号为准,正是因为这点原因,放在最前面的声明才能提前作用域。所以声明虽然是弱符号,遇到强符号时消失了,但是它能够提前作用域。

    ③全都是弱符号的话,只留一个即可,其它全部消失

    比如a.c中的两个int g_var2都是弱符号,统一符号时只留其中一个,留哪一个由编译器决定。但是不管留哪一个,作用域范围以最前面的哪一个为准。同一个.c中的强弱符号统一,是在第二阶段编译时由编译器来完成的,而不同.c中的强弱符号统一,则是由第4阶段“链接”来完成的。

  • 相关阅读:
    IKAnalyzer
    stanford corenlp的TokensRegex
    Linux网络编程-tcp缓存设置
    Java NIO(2):缓冲区基础
    Java NIO(1):迟迟登场的NIO
    git的笔记和使用中的一些技巧的总结
    vagrant 系列 博客
    flutter创建swift kotlin项目
    react eject 命令失败
    react native react-native-vector-icons/Ionicons 出现 Unrecognized font family的错误
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/9484648.html
Copyright © 2011-2022 走看看