extern 和static学习

详解c++中的 static 关键字及作用 主要介绍了c++中的 static 关键字,在我们日常使用过程中,static通常有两个作用,具体内容在文中给大家详细介绍,需要的朋友可以参考下 立即下载

extern 学习

extern 有两种用途

  1. extern “C” functionname()
  2. extern 全局变量(exter 具有开放性)

第一种用法主要作用是使导出的方法没有加一些随即后缀.方法名清晰

注意事项1.单方面修改extern 函数原型时(即开放接口变了,调用不变),编译不报错
(坑啊,曾经查了一周的问题,结果发现是客户端调用多传了一个参数)

第二种一般用于一个文件中定义变量,另外一个文件中通过extern 声明可直接使用,

1.一个应用场景_设置全局变量  
global.cpp 定义全局变量  
global.h 中为extern 的声明(而不是定义),这样其他文件只要引用该头文件即可使用全局变量.
2.注意
在使用中注意extern 声明的类型要与定义的类型完全一致

 
参考

http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html

static 学习

static 有两层含义

静态性,指生命周期从程序开始到程序结束,即使是在函数内部定义的static也是同样的声明周期.
封闭性,即变量和函数局部于文件.

封闭性是说  
A.cpp 定义了 static int iA
B.cpp 声明 extern int A;  (编译多个文件命令如下)

g++ A.cpp B.cpp -o test

编译会发生错误 对‘iA’未定义的引用 ,因为static拒绝了外部的访问.所以他

exertn 与 static的异同

extern 和 static 都可使变量生命周期在整个程序运行期间
extern 具有开放性,static 具有封闭性,他们本身是矛盾的因此不可在一起用,以下的应用是错误的

extern static int myvar;//错误的声明

openEuler 22.03 安装及配置Gitlab容器 在 openEuler 22.03 上安装及配置Gitlab容器 阅读详情

相关推荐

CAN通信:EB中配置CAN驱动,配置参数解析

以S32K314芯片说明,其他芯片不同,参数配置也有差异。

zhangxiaio1的博客 2168

extern “C” const __declspec(selectany)

<br />extern “C” const __declspec(selectany)<br />在微软有一段定义<br />DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) /<br />    extern “C” const GUID  __declspec(selectany) name / <br />         … …<br />为什么要用Extern “C” const __declspec(selectan

醉者 1444

避坑指南:Zabbix poller进程100%占用的5种常见原因及解决方案

本文深入剖析了Zabbix poller进程占用率高达100%的五大常见原因,包括监控项与进程数不匹配、不可达主机资源浪费、数据库性能瓶颈、监控项配置不合理以及版本缺陷。文章提供了从系统化诊断到针对性解决方案的完整指南,并重点介绍了如何通过优化zabbix_server.conf中的StartPollers等关键参数进行有效调优,帮助运维人员从根本上解决这一经典性能问题。

7z8x2c4v6b9的博客 250

C++中的全局变量extern,static的使用

1)编译单元(模块)   在VC或VS上编写完代码,点击编译按钮准备生成exe文件时,编译器做了两步工作:   第一步,将每个.cpp(.c)和相应的.h文件编译成obj文件;   第二步,将工程中所有的obj文件进行LINK,生成最终.exe文件。   那么,错误可能在两个地方产生:   一个,编译时的错误,这个主要是语法错误;   一个,链接时的错误,主要是重复定义变量等。   ...

Jared_Chen的博客 1658

PSpice 导入 LTspice 仿真实验 --(如何解决PSpice模型无法使用的错误)

参考了网上第三方器件导入LTspice的博客和资料,不论是哪个公司下载的SPICE模型导入LTspice的方法都类似。如果遇到导入报错的情况可以先看一下报错提示,如果通过语法修改实现功能的则说明可以进行仿真,当然性能可能与官方给的模型存在一点出入,但做一个基本的功能验证本人认为还是可以的,总比做出板子用不了或者完全不匹配的要好一些。

伊丽莎白的学习之路 8998

化学科学催化反应产率预测之Transformer建模SMILES(Datawhale AI 夏令营)

循环神经网络:由于所有的前文信息都蕴含在一个隐向量中,随着序列长度的增加,早期的上下文信息会逐渐被遗忘。卷积神经网络:受限的上下文窗口在建模长文本时存在天然不足。需要多层卷积操作才能处理长文本。在本篇文章中,我们学习了Transformer的基本架构及其在化学反应产率预测中的应用。通过利用Transformer的Encoder部分对SMILES进行建模,我们能够更有效地捕捉序列数据的特征,从而提高模型的预测性能。

不想宅的冷同学 1095

exter与static的用法

在一个源程序的所有源文件中,一个外部变量只能在某个文件中定义一次,而其他文件可以通过extern声明来访问它(定义外部变量的源文件中也可以包含对该外部变量的extern声明)。外部变量的定义中必须制定数组的长度,但extern声明则不一定要制定数组的长度。在文件file1中extern int sp;extern double val[];void push (double f){.....}do...

weixin_40317531的博客 727

10xGenomics官方可视化工具——Loupe Browser

Loupe Browser是⼀款10xGenomics开发的交互式桌⾯应⽤程序,⽤于探索10x单细胞数据,可以用来找出感兴趣的细胞、找出显著差异表达的基因、鉴定细胞类型、探索细胞亚类和数据共享。

weixin_47195452的博客 3358

【今日学习】c语言关键字之static、extern

在头文件中错误地组合使用 static 和 extern,可能导致多个编译单元包含相同的静态变量副本,造成资源浪费或逻辑错误。在同一作用域中同时使用 static 和 extern 是矛盾的,因为 static 表示内部链接,而 extern 表示外部链接。将 static 用于局部变量时,可能导致变量在函数调用间保留值,但若未初始化,其值可能不确定。使用 extern 时,确保在源文件中正确定义变量,并保持声明和定义的一致性。extern 用于声明变量或函数在其他文件中定义,实现跨文件共享数据或函数。

2301_80246079的博客 1040

手把手教你用RoboTwin训练RDT模型:从环境配置到实战微调(避坑指南)

本文提供了一份详尽的避坑指南,手把手教你如何在RoboTwin开源仿真环境中,从零开始配置环境、采集数据并完成RDT视觉语言动作模型的实战微调。文章涵盖了环境搭建、数据流水线构建、模型配置与训练等关键步骤,旨在帮助研究者和开发者高效利用仿真数据,低成本探索具身智能应用。

weixin_29094979的博客 132

第3章 基于三电平空间矢量的中点电位平衡策略

本文档深入探讨了基于三电平空间矢量的中点电位平衡策略。重点在于NPC型三电平逆变器的中点电位平衡问题,由于三电平结构的特点,使得直流侧两个电解电容器的充放电不均匀导致中点电压不均衡。文章通过对不同矢量作用下电流、电压的变化进行了详细的定量和定性分析,并提出了利用冗余小矢量的合理配置以及引入调制因子来解决中点电位偏移的方法,确保中点电压在一个完整的开关周期内的稳定性,进而提高系统的可靠性。

嵌入式老牛的博客 2182

【C语言学习】static和extern

本文介绍了C语言中static和extern关键字的作用域和生命周期特性。static可修饰局部变量、全局变量和函数,其核心作用是改变变量的存储位置和可见性:修饰局部变量时将其存储从栈区改为静态区,延长生命周期但作用域不变;修饰全局变量和函数时将其外部链接属性改为内部链接属性,限制其仅能在当前源文件使用。extern则用于声明外部符号,使其他文件能访问全局变量或函数。通过对比代码示例,展示了static如何改变变量行为,并提供了实际使用建议,帮助开发者合理运用这些关键字控制变量和函数的可见范围。

embrace99的博客 898

基于 FPGA Vivado 信号发生器设计(附源工程)

今天给大侠带来基于 FPGA Vivado 信号发生器设计,开发板实现使用的是Digilent basys 3,如有想要入手basys3开发板的,可以联系牛总:18511371833。话不多说,上货。 本篇掌握基于 FPGA Vivado 信号发生器设计(附源工程),掌握基于添加文件和IP的Vivado工程设计流程,掌握基于Tcl的Vivado工程设计流程,学习信号发生器的基本组成结构。获取本篇相关源工程代码,可在公众号内回复“信号发生器设计源工程”。 设计原理 信号发生器...

7990

C:关于static 和 extern 关键字的介绍-学习笔记

两个关键字static 和 extern的作用以及用法 作用域与生命周期的介绍

JonlyMay的博客 2380

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【学习笔记】关键字static 和 extern

.

一步一脚印 732

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

黑马视频学习笔记static和extern

1、外部函数,定义的函数能被本文件或其他文件访问

cjfire的专栏 531

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++ 学习 (static, extern)

首先从静态变量说起. C++里面静态变量有三种: 分别是外部链接性,内部链接性和无链接性. 声明外部链接的变量的方法是在代码块外面声明它. 此变量是全局变量,多文件中亦可用. 声明内部链接的变量的方法是在代码块外面声明它并加上static限定符. 此变量是全局变量,但仅在本文件中可用. 声明无链接的变量的方法是在代码块里面声明它并加上static限定符. 此变量是局部变量,但仅在本

u013570474的专栏 327

IOS 开发学习六 extern 和 static 对函数的作用

一、extern 与函数 如果一个程序有多个.c源文件  ,每个源文件在编译后会对应一个.obj文件 ,这些目标文件之间可能有关联,把它们链接在一起再生成可执行文件 。 外部函数:当前文件定义的函数允许其他文件访问。不可以有同名的名部函数;内部函数:当前文件定义的函数不允许其它文件访问、调用,只能在内部使用,称为内部函数。内部函数可以重名。 main.c// // main.c /

猿来这样-谢厂节的博客 3141

【C语言学习笔记】关键字:typedef、static和extern

第一部分 typedef 一、typedef的作用 给已经存在的数据类型起一个新的名字。 typedef 原有类型名 新名字;二、使用场合 1、基本数据类型 typedef int MyInt; // 在别名的基础上还能继续起别名 typedef MyInt MyInt2;

dite_water的专栏 753

C++学习笔记:extern & static

    随手记录一些C++学习内容,望大牛不吝指教!    extern的理解如下:    extern int staticNumber=0;是声明全局变量,在同一个程序中,只要在需要的地方使用extern int staticNumber;声明一下在静态存储区查找该变量,就可以使用该变量了。    extern还有一种用法,extern "C" void* createModule

口是心非 497

c++中extern关键字和static的作用域的学习

之前对static修饰变量后作用域的问题一直是大体了解,感觉和普通变量的作用域并没有什么区别。聚个栗子 在A.h中: #pragma once static int a=365; class A { public: A(); ~A(); }; 在main.c中: #include&lt;iostream&gt; #include"A.h" using namespace std;...

u011526967的博客 303

stm32f103学习笔记——关键字extern、static、const

1、extern extern放在变量和函数声明之前,表示该变量或者函数在别的文件中已经定义,提示编译器在编译时要从别的文件中寻找。除此之外,extern还可以用来进行链接指定。 (1) 声明外部变量。在声明全局变量时,不同的文件在编译器编译时是不透明的,在A.c中定义 int i,同时在B.c中定义 int i,编译器编辑时是不会报错的,但是当链接linking...时会报错重复定义,链接是

Lang_Billow 8993

O-C学习之const,static,extern c

下面的声明都是什么意思?  const int a;  int const a;  const int *a;  int * const a;  int const * a const;    前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是, 整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说, 指

MirrorTs的专栏 449

java extern的作用_学习笔记之20-static和extern关键字2-对变量的作用

上一讲介绍了static和extern对函数的作用,static用来定义一个内部函数,不允许其他文件访问;extern用来定义和声明一个外部函数,允许其他文件访问。static和extern对变量也有作用,不过跟函数有点差别。C语言和Java都有全局变量的概念,但是它们的用法还是有些差别的。一、在Java中,全局变量的定义没有严格的位置规定全局变量可以定义在类的最前面,也可以定义在类的最尾端,也就...

weixin_39714849的博客 109

C++学习笔记:static和extern在类、结构体外的作用【Cherno】

如同字面意思:static代表不流动,extern代表流动; 说实话,这俩东西给本菜的感觉像是类里的public、private关键字,都是对作用域的限制; 如果我们定义一个变量为static变量,那么就声明了这个变量只能在本文件在被链接,对函数也是如此。extern不一样,当你用他声明一个变量时,系统并不是在真正创建一个变量,而是在向其他文件寻找同名变量,并调用; 现在我们有两个文件,value.cpp,源.cpp 源.cpp: //源.cpp #include<iostream>

weixin_62953519的博客 325

Objective C中关键字static、extern、const的学习

1、关键字static 1.1static关键字声明的变量放置的位置 static 写在interface外面 //编译器会警告 static 写在interface里面 //编译器报错 static 写在implementation外面,或者方法中 //没有警告 2、关键字extern 3、关键字const ...

weixin_33989058的博客 94
上一篇: 检查本机内部类型占几个字节
下一篇: std::map find 陷阱
writeeee
博客等级 码龄18年 35粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值