技术标签: C语言
extern外部声明全局变量:
全局变量定义:int a = 10;
则全局变量的外部声明只需指明extern、类型、变量名即可,不可在外部声明时再进行赋值,如可:extern int a;
全局数组定义:int array[10] = {12,3,1,4};
则全局数组的外部声明为:extern int array[ ];
常在两个地方用extern声明:
一是全局变量在源文件末尾定义,则可在源文件的前面进行extern声明,则从extern声明开始到末尾此全局变量都可有效;
二是全局变量在别的源文件中定义,则可在本源文件中进行extern声明,也可在一个头文件中extern 声明,然后本源文件包含此头文件,不管是在源文件中声明还是在头文件中声明,都需要在编译时加入定义此全局变量的源文件。
static修饰的全局变量:
则此全局变量就不能再被外部文件进行extern引用了,其作用范围就只能是本源文件。
extern外部声明函数:
在一个源文件中引用另一源文件,同外部变量一样可以在源文件中也可以在头文件中进行函数的声明,不同的是,对于外部变量的外部声明一定要加上extern ,而对于函数的外部声明则可以加extern也可以不加。
static修饰的函数:
用函数的定义的时候如果用了static进行修饰,则其它源文件就无法对此函数进行外部声明和引用了,此函数只能在此源文件中进行引用。
========================================================================================
源自:http://baike.baidu.com/view/963932.htm
1
2
3
4
5
6
7
|
//A.cpp
inti;
intmain()
{
}
//B.cpp
inti;
|
1
2
3
4
5
|
Linking...
B.obj:errorLNK2005:"inti"(?i@@3HA)alreadydefinedinA.obj
Debug/A.exe:fatalerrorLNK1169:oneormoremultiplydefinedsymbolsfound
Errorexecutinglink.exe.
A.exe-2error(s),0warning(s)
|
1
2
3
4
5
6
7
|
//A.cpp
intmain()
{
i=100;
//试图使用B中定义的全局变量
}
//B.cpp
inti;
|
1
2
3
4
5
|
Compiling...
A.cpp
C:\DocumentsandSettings\wangjian\桌面\tryextern\A.cpp(5):errorC2065:'i':undeclaredidentifier
Errorexecutingcl.exe.
A.obj-1error(s),0warning(s)
|
1
2
3
4
5
6
7
8
|
//A.cpp
externinti;
intmain()
{
i=100;
//试图使用B中定义的全局变量
}
//B.cpp
inti;
|
文章浏览阅读187次。这个专栏是用于记录我在学习VTK过程中的一些心得体会。参考的资料主要有以下三个:1. 张晓东 罗火灵《VTK图形图像开发进阶》3. 沈子恒 《VTK 三维数据渲染进阶》遇到的一个大问题就是由于版本更新,这些资料中很多代码无法正常运行,需要进行一定的修改,所以这个专栏会记录下来我修改后的程序代码,以便于我之后温习。也希望能给和我有同样困扰的小伙伴们一些帮助。我使用的版本:VTK9 + VS2022在上一篇中我介绍了VTK的流水线设计。_vtk
文章浏览阅读354次。搞懂前端缓存总的来说:如果开启了Service Worker首先会从Service Worker中拿如果新开一个以前打开过的页面缓存会从Disk Cache中拿(前提是命中强缓存)刷新当前页面时浏览器会根据当前运行环境内存来决定是从 Memory Cache 还是 从Disk Cache中拿(可以看到下图最后几个文件有时候是从 Memory Cache中拿有时候是从Disk Cache中拿) 注意:以上回答全部基于chrome浏览器搞懂前端缓存前端缓存/后端缓存扯了些没用的,我们先进入定_前端资源请求来源(disk cache)
汇编语言源程序基础分析--LED灯闪烁。摘要长度为30到160字符数之间。
文章浏览阅读8.2k次,点赞9次,收藏58次。本文将介绍如何在 Linux 中为文件创建硬练级和符号(软)链接,并探讨两者之间的相同和不同之处。符号链接与 Windows 中的快捷方式很像。Windows 中的快捷方式是一个带箭头的图标,空间占用一般很小,仅仅提供了一个指向目标文件的通道,Linux 中的符号链接也类似。符号链接应用很灵活,可以为任意文件创建符号链接。虽然硬链接名字里面也有链接二字,但其与符号链接还是相当不一样的。要理解硬链接,我们得先了解若干基本概念。首先我们得搞明白 Linux 的文件是如何存储中,在 Linux 中当划分磁盘分区并_为该文件创建符号链接,并命名为“姓名首字母+l”。
文章浏览阅读3.2w次,点赞75次,收藏753次。STM32各类小车工作原理及学习http://www.yahboom.com/study/bc-32简介:循迹小车由三轮或四轮小车和摄像头两大部分组成,通过镜头识别路径,将其得到的图像做处理并发送给小车,小车对应做出动作。寻迹小车核心组成:openMV和STM3F1。涉及主要知识:STM32相关知识(学习视频 https://ke.qq.com/course/279403);openM..._摄像头循迹小车的原理
文章浏览阅读10w+次,点赞82次,收藏352次。Code Composer Studio 是一种集成开发环境 (IDE),简称CCS软件。支持 TI 的微控制器和嵌入式处理器产品系列。Code Composer Studio 包含一整套用于开发和调试嵌入式应用的工具_ccs是什么软件
文章浏览阅读170次。通过对Launcher的各个核心组件的分析和调用关系的解析,我们可以更好地理解Launcher的运行机制。Launcher作为Android系统的入口界面,扮演着重要的角色,为用户提供了良好的桌面体验。DragLayer的创建:LauncherModel初始化完成后,系统会创建DragLayer对象,并将其作为Launcher的根视图。Android的Launcher(启动器)是用户与设备交互的第一个界面,它负责加载并展示主屏上的应用图标、小部件和壁纸等内容。二、Launcher的启动流程。_android launcher源码解析
文章浏览阅读2.5w次,点赞6次,收藏75次。Unity显示360度全景,其实就是把全景图片贴到一个球上,只不过,这个球是从里往外看。先把摄像机移动到坐标(0,0,0)。添加一个球体,坐标也是(0,0,0)把全景图片拖到球体上,这个时候,因为贴图在外面,所以还看不到新建一个着色器Shader "InsideVisible" {Propertie_unity raw image显示全景图
文章浏览阅读457次。编号服务器名称网卡Mmasterens33: 192.168.1.100/24lo:192.168.1.100/32 bro 192.168.1.100W1web 1ens33:192.168.1.23/24lo:192.168.1.100/32 bro 192.168.1.100W2web 2ens33:192.168.1.24/24lo:192.168.1.100/32 bro 192.168.1.100为所有服务器安装必备软件mv /etc/yum..._lvs本机搭建
文章浏览阅读2.1k次。镜子里的世界使用stegSolve查看一下,就找到了flagningen:题目提到了四位密码,会联想到是否需要破解密码,点开文件时一个图片,就拿去kali里面,先binwalk一下,有东西,再foremost一下,东西就out出来了。果真和猜想一样,得到一个zip文件,拿去暴力破解,得到密码,输入进去。成功得到flag。小明的保险箱:和前一道题一样,题目提示有四位密码,获得一个简单的图片,扔进kali,操作和前一题一样获得out,然后暴力破解,顺利得到密码,输入进去,成功得到flag。._ctf elf
文章浏览阅读889次,点赞22次,收藏18次。在CSS3中,animation属性用于实现元素的动画。animation属性跟transition属性在功能实现上是非常相似的,都是通过改变元素的属性值来实现动画效果。但是,这两者实际上有着本质的区别。CSS3中的animation属性就是为了解决这些问题而提出的。animation属性可以通过控制关键帧来控制动画的每一步,从而实现更为复杂的动画效果。使用animation属性实现CSS3动画需要两步。_css3 动画细说
文章浏览阅读226次。原文:Concentration Gradients什么是浓度梯度?溶液中化学物质的浓度指单位体积溶液中有多少这种分子。梯度用来测量某量随地点而变的变化程度。浓度梯度当然就表示浓度随地点而变的变化程度。现在我们举几个例子。我们把单个分子画成小蓝点。如果分子浓度均匀,即没有梯度,溶液就如下图所示:没有浓度梯度的溶液下面再看个浓度有梯度的溶液,如下图所示,右边浓度高,左边浓度低:有浓度..._浓度扩散 随机行走