关于全局变量和全局函数的声明
2013-12-25 14:28
246 查看
申明全局变量,全局函数一定要在cpp中申明
其他类引用该全局变量就include该cpp的h文件
然后extern一下就好了
否则容易出现该重复定义错误
这个"容易"是如何解释的呢?
例如A.h中如果申明了全局变量int Global;
在B.h中include "A.h"
extern int Global;
则你include A.h相当于把A.h中全局变量的申明也include进来了,编译器就会认为是重复定义
所以全局变量和函数申明一定要在cpp中
当.h文件里有函数实现时
VS2005编译器报错误 fatal error LNK1169: 找到一个或多个多重定义的符号
解决方法
1.在.h里的函数声明前加 inline
2.在项目->属性->链接器->命令行->附加选项中加 /force
注: 之所以 在.h里的函数声明前加 inline 可以解决问题是因为
内联函数与普通函数的不同就是在于函数的定义部分的执行方式。内联函数是在执行时直接将定义
部分的代码复制过去执行,而普通的是进入到该函数定义部分执行,然后反还结果。前者速度快但
比较占用内容,后面速度慢但省空间,因为函数在执行完后所用的内存就会自动被系统收回。
不会被编辑器认为是重复定义函数.
其他类引用该全局变量就include该cpp的h文件
然后extern一下就好了
否则容易出现该重复定义错误
这个"容易"是如何解释的呢?
例如A.h中如果申明了全局变量int Global;
在B.h中include "A.h"
extern int Global;
则你include A.h相当于把A.h中全局变量的申明也include进来了,编译器就会认为是重复定义
所以全局变量和函数申明一定要在cpp中
当.h文件里有函数实现时
VS2005编译器报错误 fatal error LNK1169: 找到一个或多个多重定义的符号
解决方法
1.在.h里的函数声明前加 inline
2.在项目->属性->链接器->命令行->附加选项中加 /force
注: 之所以 在.h里的函数声明前加 inline 可以解决问题是因为
内联函数与普通函数的不同就是在于函数的定义部分的执行方式。内联函数是在执行时直接将定义
部分的代码复制过去执行,而普通的是进入到该函数定义部分执行,然后反还结果。前者速度快但
比较占用内容,后面速度慢但省空间,因为函数在执行完后所用的内存就会自动被系统收回。
不会被编辑器认为是重复定义函数.
相关文章推荐
- 关于android webview读取js全局变量或者函数返回值
- 关于android webview读取js全局变量或者函数返回值
- 关于函数的自己的参数,我们必须要用全局的变量来接收
- 多个".h"文件中声明及定义 全局变量和函数
- 关于函数声明和变量声明
- PHP中关于在函数内引用全局变量的问题
- 关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题
- 一个讨论引发关于js中函数声明,函数表达式,形参与变量声明赋值引发的一些事(http://www.cnblogs.com/zhouyongtao/archive/2012/11/22/2783089)
- 关于全局变量和函数,在其他类中调用问题,extern关键字
- 全局变量和函数的声明
- JavaScript中的陷阱(关于变量声明,函数)
- C怎样定义和声明全局变量和函数最好?
- 关于Python函数定义全局变量执行弹出SyntaxWarning的问题
- 字典,集合,函数,global全局变量声明
- 多个".h"文件中声明及定义 全局变量和函数
- 转载:关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题
- VC++如何声明定义全局函数与全局变量
- C中全局变量和函数声明的认识
- 关于函数传参,全局变量,局部变量的一点认识
- autohotkey关于函数访问全局变量的解决方案