extern和static的区别

c语言中的 static:

修饰局部变量:存放在静态数据区,生命周期位整个程序结束,但作用于仍为函数局部。
修饰全局变量:无法被同一工程其他源文件访问。
修饰函数:与全局变量类似。

extern:

可被同一工程其他源文件访问

c++中static:

修饰类中函数:表示该函数属于一个类,而不是此类的任何特定对象。
修饰类中变量:表示该变量为所有对象所有,在存储空间中只有一个副本。

c++中extern

要调用其它文件中的函数和变量,只需把该文件用#include包含进来即可。extern可加速程序的编译过程。
C++中调用C库函数,就需要在C++程序中用extern “C”声明要引用的函数。这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同,用此来解决名字匹配的问题

https://www.cnblogs.com/zhaodun/p/6432615.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RT5350原厂SDK及AP移植步骤详解

最近想搞一下rt5350,所以找了个原厂的SDK包进行了编译,很快路由器就可以用了,把我的编译操作步骤写了下分享给更多的爱好者,供大家参靠,下一步准备移植摄像头玩玩。有兴趣的可以一起交流。 RT5350移植Toolchain工具的安…

linux系统编程之进程概念(操作系统---管理,进程创建,进程状态,进程优先级, 环境变量,程序地址空间,进程O(1)调度方法)

系统编程: 进程概念->进程控制->基础IO->进程间通信->进程信号->多线程进程概念 冯诺依曼体系结构----现代计算机硬件体系结构 冯诺依曼体系结构----现代计算机硬件体系结构 计算机五大硬件单元:输入设备:键盘输出设备&#…

Make Menuconfig详解 (配置内核选择)

Make Menuconfig简介 make menuconfig 图形化的内核配置make mrproper -----删除不必要的文件和目录. #make config(基于文本的最为传统的配置界面,不推荐使用) #make menuconfig(基于文本选单的配置界面,字符终端下…

Linux系统编程之进程控制(进程创建,fork函数,进程中止,进程等待,程序替换)

进程创建 fork()------复制,返回值,写时复制 vfork()创建子进程—子进程与父进程共用同一块虚拟地址空间, 为了防止调用栈混乱,因此阻塞父进程直到子进程调用exit()退出或者进行程序替换 vfork创建的子…

Linux内核配置系统浅析

随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题,即如何将源代…

Linux系统编程下做一个简易的shell

自主实现一个shell--------minshell shell:命令行解释器-------解释执行用户的输入(完成相对应的功能) 步骤 1. 获取标准输入中的字符串 2. 对字符串进行解析[ls -l -a][ls ] [-l ] [-a] 3. 创建子进程 4. 子进程中进行程序替换 5. 父进程…

C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))

内联函数 概念 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率 函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用…

linux内核中的汇编语言

在Linux内核代码中,有一部分是用汇编语言编写的。其大部分是关于中断与异常处理的底层程序,还有就是与初始化有关的程序,以及一些核心代码中调用的公用子程序。 用汇编语言编写内核代码中的部分代码,大体上是出于如下几个方面考虑…

数据结构课程设计---c语言实现通讯录(动态扩容+文件存储)

1 题目一 : 通讯录 1.1问题描述 编写一个通讯录管理系统,以把所学数据结构知识应用到实际软件开发中去。每条信息至包含 :姓名(NAME )街道(STREET)城市(CITY)邮编&#…

linux内核panic

1. Linux Kernel Panic的产生的原因 panic是英文中是惊慌的意思,Linux Kernel panic正如其名,linux kernel不知道如何走了,它会尽可能把它此时能获取的全部信息都打印出来。 有两种主要类型kernel panic,后面会对这两类panic做详细…

数据结构课程设计------c实现散列表(二次探测再哈希)电话簿(文件存储)

题目二 :散列表的设计与实现 2.1问题描述 设计散列表实现电话号码查找系统,使得平均查找长度不超过2基本要求 (1)设每个记录有下列数据项:电话号码、用户名、地址; (2)从键盘输入各…

科技论文----论搜索引擎现状及发展趋势

搜索引擎现状及发展趋势 【摘要】 随着最近10年中国互联网的快速发展菜互联网已经彻底改变了人们的生活方式,而在互联网的发展过程中。搜索引擎发挥了巨大的推动作用。本文对搜索引擎的发展历史采用的技术,发展现状出现的问题以及未来发展方向进行了综述…

inittab文件格式

/etc/inittab文件是Linux系统第一个进程init的配置文件。其每个记录占一行,每行最多512个字符。该文件的每个记录的格式为: id:runlevel:action:process 其中,id是一个不超过4个字符的标识,用来唯一标识一条记录。runlevel表明该条…

数据结构课程设计------扫雷游戏(升级版,可展开)

本程序由团队中的一个人所写,本人看懂并写下此文章 题目:扫雷 3.1问题描述 扫雷游戏 [基本要求] (1)完成棋盘的初始化并在标准显示器中显示 (2)通过输入行列值确定用户输入 (3)游…

C语言的编译链接过程的介绍

发布时间: 2012-11-08 10:17 作者: 未知 来源: 51Testing软件测试网采编 字体: 小 中 大 | 上一篇 下一篇 | 打印 | 我要投稿 | 推荐标签: DotNet 软件开发 | 感言十年 C语言的编译链接过程要把我们编写的一个c程序(源代码&#x…

vs2013链接Mysql时出现 (由于找不到libmysql.dll,无法继续执行代码。重新安装程序可能会解决此问题)

将MySQL安装目录下的lib文件夹中 的libmysql.dll文件拷贝到C:\Windows\System32目录下即可

gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer

少优化->多优化: O0 -->> O1 -->> O2 -->> O3 -O0表示没有优化,-O1为缺省值,-O3优化级别最高 英文解析: -O -O1 Optimize. Optimizing compilation takes somewhat more time, an…

const 和 #define 区别总结

const有类型,可进行编译器安全检查,#define 无类型,不可进行类型检查const 有作用域,而#define 不重视作用域,默认定义在指定作用域下有效的常量,那么#define 就不能用(可以用#undef结束宏定义生…

Eclipse : Unresolved inclusion

Eclipse 中新建C 或C 到项目时&#xff0c;头文件报警&#xff0c;显示“Unresolved inclusion:<stdio.h>” 虽然不影响项目到编译和运行&#xff0c;确也无法查看头文件&#xff0c;让人感觉实在不爽。下面是在国外到网站上看到解决方案&#xff0c;自己整理了一下拿来分…

c++对const增强 和cosnt分配内存情况

const增强 c语言中const是伪常量&#xff0c;可以通过指针修改 c中const会放到符号表中 c语言中const默认是外部连接&#xff0c;c中const默认是内部链接 #include<iostream> using namespace std;const int m_a 10; //在全局区域里&#xff0c;受到保护&…