[情况]最近用OpenCV的库,写一个“轮廓”识别的程序,遇到一个关于C/C++的小问题:
[问题]用visual studio 2012 建一个C++的空项目,然后建一个包含main()函数的cpp文件,在这个文件的main()函数的外面声明10个全局变量,然后把这个项目的其他函数都分别存放成一个单独的cpp文件,再建立一个头文件(.h),其中包含每个函数的声明,但问题出来啦:这些单独的函数都要用到那10个全局变量,但如果这些函数和main()函数不在同一个文件下则无法用这10个全局变量.......
这该怎么办呢?
-------------------------------------------------------------------------------
非常感谢!
全局变量定义时,如果不加static修饰,那么作用域就是整个项目,可以在任何一个文件中访问或修改。
不过直接在其它文件中引用该变量时,会报未定义错误,需要在调用文件进行声明。
声明格式为:
类型 变量名;
注意声明时不能有赋值操作,否则就会被认定为是新的定义,导致重复定义错误出现。
下面是一个例子。
在a.c中,定义全局变量gvar,类型为int,初始化值为3.
int gvar = 3;
在同一个项目的b.c中,声明gvar,同时定义一个函数,使gvar自加,并打印gvar的值:
extern int gvar;//加extern声明可以使读到代码的人知道,这是一个外部文件定义的全局变量,但在C/C++中,该关键字并非强制,不加也不会出错。我这么试了一下,但还是产生了循环引用问题,vs2012将所有重复引用的全局变量都报错了,是不是要给全局变量前加上一个extern呢?
追答不用在其他头文件中包含这个独立头文件。
本回答被网友采纳