美文网首页
C++ static 和 extern 的区别

C++ static 和 extern 的区别

作者: 李刀鱼 | 来源:发表于2019-03-22 20:00 被阅读0次

首先说结论:

    两者定义的变量全局都可用,都通过包含头文件使用。

    static变量必须初始化,extern声明和定义需要分开;在使用别的编译单位的静态变量时,实际是在自己的编译单位中保存了一份拷贝,和初始化它的原编译单位不是同一个变量了。而extern直接使用的就是原变量。

下面是学习过程:

这两天在学习vs windows编程的时候,想实现一个每秒更新窗口文字的功能,当时想到的最简单的方式就是每秒修改一个全局变量,然后在UpdateWindow函数中,将这个全局变量刷新到窗口上。  

一开始想到的就是用静态变量,不用分开定义,全局可访问。在更新类Engine中,定义了全局变量static char[] greeting, 每隔1秒,修改greeting的值。然后在窗口处理类App的MsgProc函数里,将greeting打印到窗口里。但是这种实现方式,窗口并没有变化,通过日志发现,greeting的值再Engine类里确实得到了更新,但是再App里并没有变化。通过谷歌,发现static定义的变量,两个编译单位不是使用的同一份拷贝。改为extern以后,实现了功能。

相关文章

网友评论

      本文标题:C++ static 和 extern 的区别

      本文链接:https://www.haomeiwen.com/subject/ojjlvqtx.html