在程序链接时,链接器只关心函数和全局变量,链接器把它们识别为符号,来进行链接。注意,高级语言中的函数重载仅仅是语法糖,本质是不同的函数

强符号:函数和已初始化的全局变量
弱符号:未初始化的全局变量

  • 不允许有多个强符号。如下,编译器会报错
//a.c中定义的全局变量i
int i = 10;//b.c中定义的全局变量i
double i = 10;
  • 若有1个强符号和多个弱符号,则选择强符号。如下,不会报错
//a.c中定义的全局变量i
int i = 10;//b.c中定义的全局变量i
double i;
  • 若有多个弱符号,随机从它们里面选一个。如下,不会报错
//a.c中定义的全局变量i
int i;//b.c中定义的全局变量
double i;
  • 由此可看出,滥用全局变量很危险,所以应该尽量避免全局变量,或使用static修饰。

转载于:https://www.cnblogs.com/Widesky/p/9089802.html

C语言为什么要尽量少用全局变量相关推荐

  1. C语言goto关键字—尽量少用

    一般来说,编码的水平与goto 语句使用的次数成反比.有的人主张慎用但不禁用goto语句,但我主张禁用.关于goto 语句的更多讨论可以参看Steve McConnell 的名著<CodeCom ...

  2. 全局变量的优缺点及为什么要少用全局变量

    全局变量 对于程序员来说,是程序 "同步"的一种最方便的 方式,我相信大多数的程序员 刚开始都是使用全局变量来实现"同步"操作的,但是随着我们 编程理念的升华, ...

  3. java编程时 尽量少用_Java编程语言基础知识的要点

    很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.下面就说说Java零基础学习Java编程语言基础知识的几个要点.希望能够对Java编程基础入门学习的新手有帮助 ...

  4. 我是一个尽量少用国产软件的软件开发工程师

    [作者] 网名: 猪头三 站点: http://www.x86asm.com Email: 643439947@qq.com QQ: 643439947 编程生涯: 2001-至今[15年] 职业生涯 ...

  5. 假币问题:有n枚硬币,其中有一枚是假币,已知假币的重量较轻。现只有一个天平,要求用尽量少的比较次数找出这枚假币。

    2017年软件设计师上半场下午题目 [说明] 假币问题:有n枚硬币,其中有一枚是假币,已知假币的重量较轻.现只有一个天平,要求用尽量少的比较次数找出这枚假币. [分析问题] 将n枚硬币分成相等的两部分 ...

  6. 【满分】【华为OD机试真题2023 JAVAJS】取出尽量少的球

    华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 取出尽量少的球 时间限制:1s 空间限制:32MB 限定语言:不限 题目描述: 某部门开展Family Day开放日活动,其中有个从桶里取 ...

  7. 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据

    一致性哈希算法--算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据 参考文章: (1)一致性哈希算法--算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据 (2)http ...

  8. Effective Objective-C 2.0 — 第二条:类的头文件中尽量少引入其他头文件

    第二条:类的头文件中尽量少引入其他头文件 使用向前声明(forward declaring) @class EOCEmployer 1, 将引入头文件的实际尽量延后,只在确有需要时才引入,这样就可以减 ...

  9. 三种升糖之王,糖友尽量少碰

    糖尿病是生活中常见的慢性病.唐福新逆糖中心告诉大家糖尿病的出现与患者的日常生活习惯和饮食习惯密切相关. 如果长期摄入一些高糖高脂肪的食物,再加上日常作息不佳等.长此以往,糖尿病会慢慢"找上门 ...

最新文章

  1. 阿里巴巴Json工具:Fastjson教程
  2. hdu4994 博弈,按顺序拿球
  3. 莱斯分布概率分布曲线
  4. 【算法】K-Means聚类算法(k-平均或k-均值)
  5. vue如何使浏览器url固定_怎么给 vue的 vue-router url地址最后加上 / 斜杠
  6. DEKR 解构式人体关键点回归(三):损失函数
  7. iPhone 6S GPU到底多强
  8. iOS绘图系列四:绘制文字和图像CGContextDrawImage,drawInRect:,drawAtPoint:, UIGraphicsBeginImageContext...
  9. onkeydown为什么会无限回调_为什么投资者总喜欢在股票下跌时买入?只有傻瓜才能在股市里挣钱...
  10. mysql之查询某段时间范围的数据
  11. 电商大促作战指南之全链路压测
  12. 在登录页面中输入正确的信息还是显示用户名或密码错误
  13. 再次哀悼吧!最佳夸浏览器同步 Xmarks 宣布终止服务
  14. 六个好用的在线代码编辑器,你选哪个?
  15. Spring Boot(二):Spring Boot中的Starter介绍
  16. 动画必须有(二):悬浮菜单了解一下!
  17. 【云IDE】取次花丛懒回顾
  18. Python学习笔记(5)
  19. 进阶项目(12)PS2键盘驱动程序设计讲解
  20. 云计算设计模式(二十)——调度程序代理管理者模式

热门文章

  1. linux中$@,$*,$0,$$,$?参数的含义
  2. BZOJ.5093.[Lydsy1711月赛]图的价值(NTT 斯特林数)
  3. oracle误删除记录或者表的处理方法
  4. Swift 提示 error running playground...
  5. java中的==和equals的区别
  6. 【分享】小工具大智慧之Sql执行工具
  7. 位运算和sizeof运算符
  8. c++ 课程设计之车票管理系统
  9. C++中之---数组和vector
  10. 数据结构笔记(二十七)-- 图的深度优先遍历