注册 登录
编程论坛 C++教室

C++ 中全局变量怎么定义?

Talo 发布于 2014-06-28 15:14, 843 次点击
我试过加extern,结果总是有一个源文件不能用,如果全加上extern,就会出现一长串的乱七八糟的错误提示。
我也试过定义在头文件中,结果也是出现错误提示。

求指教
10 回复
#2
zklhp2014-06-28 15:23
程序代码:

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int G_num = 5;

int main(void)
{
    cout << ::G_num << endl;
    return 0;
}

#3
Talo2014-06-28 20:08
回复 2 楼 zklhp
这是什么意思?
#4
TonyDeng2014-06-28 20:12
回复 楼主 Talo
在一个头文件中写extern声明,在一个模块文件中写定义,然后在所有模块中#include那个头文件。不写extern声明,那是没用的,不是全局变量。
#5
Talo2014-06-28 20:17
回复 4 楼 TonyDeng
试了一下,还是有错误提示
#6
TonyDeng2014-06-28 20:24
以下是引用Talo在2014-6-28 20:17:19的发言:

试了一下,还是有错误提示


那一定是你写错了。注意我说的“声明”和“定义”有什么区别,那字眼不是乱说的。
#7
Talo2014-06-28 20:35
可能是其它地方有问题吧,但是组建的时候只有这一个错误,怎么都解决不了。
#8
TonyDeng2014-06-28 20:37
有问题就把画面截出来看呀,别人看不到现场,你要想办法让帮助你的人看到现场才行,光说有问题有什么用。
#9
Talo2014-06-28 20:41
只有本站会员才能查看附件,请 登录
#10
TonyDeng2014-06-28 20:48
定义:
int x = 0;           // 这是对变量x进行定义并初始化,定义在一个模块中只能进行一次
声明:
extern int x;        // 这是声明本模块将引用一个叫x的int型数据,但它不在本模块定义。

写一个.h头文件:
extern int x;        // 告诉编译器包含此头文件的模块将使用这么一个变量,其定义在某个模块中,千万不要在这里定义或对该变量赋值,否则就出现你那个编译错误,即重复定义错误。

在适当的模块中写出上面的定义,这个就是变量实体。
在所有用到这个变量的模块(.c或.cpp源代码文件)中,包含上述头文件。
#11
stop12042014-07-02 22:48
估计你的编译器不支持太多东西.

试一下
把  {using std::cout;
using std::cin;
using std::endl;}
换成  using spacename std;
____________________________________
main 的void去掉

然后::G_num 改成 G_num


编译一下 ,如果还是错误那就是你编译器的设置有问题.

饿..重新看了下你发的图.

他跟你说你的class Academic_master.... 在插入记录.obj里已经定义-.-  
你检查 那个插入记录的  obj ..  你可以试一下注销电脑,然后再启动编译
1