【纠结】全局变量啊!!!!!!

简介: 【纠结】全局变量啊!!!!!!

关于全局变量的定义和声明

 

全局变量:全局变量也称为外部变量,它是在函数外部定义的变量。    

它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。

只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。

但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。

昨天犯的错误是吧一个全局变量直接定义到一个头文件中然后把用到全局变量的cpp文件都包含头文件。。可连接Linking时出现错误

int side=4;
CTetrics.obj : error LNK2005: "struct tagPOINT Orign_L" (?Orign_L@@3UtagPOINT@@A) already defined in CPaint.obj
CWndFrame.obj : error LNK2005: "struct tagPOINT Orign_L" (?Orign_L@@3UtagPOINT@@A) already defined in CPaint.obj
Main.obj : error LNK2005: "struct tagPOINT Orign_L" (?Orign_L@@3UtagPOINT@@A) already defined in CPaint.obj
Debug/Tetrics.exe : fatal error LNK1169: one or more multiply defined symbols found

网上搜错误原因;重复定义错误。。想一下,是啊,在头文件里定义一个变量这就意味着。每当include一次头文件就要定义一个变量,当然是重定义了。。。

那#pragma once 行不行啊啊?》??验证答案是不行滴。。。。。

所以呢就要想出一种方法了,,

要不就在头文件中定义成static型的变量

要不就把变量定义到头文件外部,然后再头文件中extern下。。。。。


恩,实验发现第二种方法可用,可是第一种方法的问题就有了。。。

定义成static后在类操作里面却不能再对变量修改了...(这个问题不知为什么。。请大虾帮忙解决下啦......)


看到这我觉得有必要去研究下static了、。。。。

【剩下的研究完再说吧....】


相关文章
全局变量初始化顺序探究
全局变量初始化顺序探究
|
2月前
|
API Windows
MASM32编程完善SysInfo遇到奇怪故障,真切感受全局变量和局部变量之别……
MASM32编程完善SysInfo遇到奇怪故障,真切感受全局变量和局部变量之别……
|
前端开发 程序员 PHP
程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器
程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器
197 0
写了个全局变量的bug,被同事们啪啪打脸
前阵子写了一个功能,测试 0 bug 就上线了,上线后也运行好好的,好多天都没有人反馈bug,超爽。。 不出问题还好,出问题就是大问题。。
|
编译器 C++
<C++>搞明白构造函数和析构函数有这一篇就够了
<C++>搞明白构造函数和析构函数有这一篇就够了
1206 1
<C++>搞明白构造函数和析构函数有这一篇就够了
|
编译器
C零散知识点汇总之const关键字
C零散知识点汇总之const关键字
|
Java C++ Python
详解Python函数的作用域是干嘛的
Python是静态作用域语言,尽管它自身是一个动态语言。也就是说,在Python中变量的作用域是由它在源代码中的位置决定的,这与C有些相似,但是Python与C在作用域方面的差异还是非常明显的。
|
安全 编译器 C++
内联函数和引用<C++入门>(跑路人笔记2)
内联函数和引用<C++入门>(跑路人笔记)
内联函数和引用<C++入门>(跑路人笔记2)
|
编译器 C++
内联函数和引用<C++入门>(跑路人笔记1)
内联函数和引用<C++入门>(跑路人笔记)
内联函数和引用<C++入门>(跑路人笔记1)
|
缓存 JavaScript 前端开发