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

举报
清雨小竹 发表于 2022/09/25 02:21:31 2022/09/25
【摘要】 关于全局变量的定义和声明   全局变量:全局变量也称为外部变量,它是在函数外部定义的变量。     它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能...
关于全局变量的定义和声明
  
全局变量:全局变量也称为外部变量,它是在函数外部定义的变量。     
它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 
只有在函数内经过说明的全局变量才能使用。全局变量的说明符为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了、。。。。
【剩下的研究完再说吧....】

文章来源: zzzili.blog.csdn.net,作者:清雨小竹,版权归原作者所有,如需转载,请联系作者。

原文链接:zzzili.blog.csdn.net/article/details/8265316

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。