C++全局变量尽量写在stdafx.cpp中 extern 关键字找不到外部定义就等于新定义
2010-06-26 13:51
501 查看
我自己在写程序过程中,遇到了比较奇怪的没有初始化问题。
最后发现,因为一个全局变量A写在main函数所在的cpp中,因为头文件加载先后问题,导致后边某个类B中,使用到这个A时,出现问题,本来预计会拿到A里边某些数据,但竟然什么都是0,好像A刚刚初始化一样。
我不知道根本原因是什么,我只知道肯定是extern作怪。
在类B中,用了extern定义A。但因为类B的头文件比main函数在CPP定义全局变量A更早,所以这个extern好像不起作用,VC6也不提示出错,好像默认变成直接声明一样。
反正得到的教训就是:
[b]全局变量,写在stdafx.cpp中保险,注意头文件的加载顺序[/b]
最后发现,因为一个全局变量A写在main函数所在的cpp中,因为头文件加载先后问题,导致后边某个类B中,使用到这个A时,出现问题,本来预计会拿到A里边某些数据,但竟然什么都是0,好像A刚刚初始化一样。
我不知道根本原因是什么,我只知道肯定是extern作怪。
在类B中,用了extern定义A。但因为类B的头文件比main函数在CPP定义全局变量A更早,所以这个extern好像不起作用,VC6也不提示出错,好像默认变成直接声明一样。
反正得到的教训就是:
[b]全局变量,写在stdafx.cpp中保险,注意头文件的加载顺序[/b]
相关文章推荐
- C++那些细节--extern关键字&&全局变量定义问题
- C语言extern关键字定义外部变量--Redis源码extern使用
- [C++再学习系列] 变量的声明、定义与extern关键字
- 在头文件中定义变量以及static变量意味着什么?全局变量要如何正确使用?关键字extern要怎么用?
- C++全局变量是定义在.cpp中,还是.h中?
- static(c中定义的关键字1、被其修饰者 外部无法使用(相反的都可以使用extern在外部使用) 2、函数局部变量使用成为静态的放入静态池-生存期改变。c++进行了扩充,使它在类中有了特殊作用)
- 基于C++全局变量的声明与定义的详解
- c++多个源文件共用一个全局变量(extern 的用法)
- C++全局变量的声明和定义
- Objective-C中使用extern引用外部全局变量(如:创建全局可变字符串)
- C/C++定义全局变量/常量几种方法的区别
- C++中定义全局变量
- C/C++语言在头文件中定义全局变量
- 用extern定义全局变量
- 变量的声明与定义以及关键字extern的用法
- C++全局变量的声明和定义
- C++全局变量的声明和定义
- extern 定义全局变量
- 定义C/C++全局变量/常量几种方法的区别
- 定义c/c++全局变量/常量几种方法的区别