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

来源:互联网 发布:java数据访问层框架 编辑:程序博客网 时间:2024/05/22 20:48
关于全局变量的定义和声明
  
全局变量:全局变量也称为外部变量,它是在函数外部定义的变量。     
它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 
只有在函数内经过说明的全局变量才能使用。全局变量的说明符为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了、。。。。
【剩下的研究完再说吧....】

原创粉丝点击