无法在c ++中定义全局变量

时间:2014-04-18 16:56:09

标签: c++

我是一名刚接触编程的人,并且一直在努力学习C ++初学者指南' (我非常享受!)。但是,我遇到了一些问题。在第5章中,Schildt讨论了全局变量,他介绍了这个小程序,以展示如何使用它们:

#include<iostream>
using namespace std;

void func1();
void func2();

int count;

int main()
{
    int i;
    for (i = 0; i < 10; i++){
        count = i * 2;
        func1();
    }
    cin.get();
    return 0;
}
void func1()
{
    cout << "count: " << count; // access global count
    cout << "\n";
    func2();
}
void func2(){
    int count;
    for (count = 0; count < 3; count++) cout << ".";
}

当我编译代码时,只要在主程序段和程序的其他功能中使用变量计数,我就会收到错误消息。这是编译器的一个问题(Visual Studio Express 2013?我是否需要在全局变量前加上一些东西才能使用它?

提前致谢,

Ĵ

2 个答案:

答案 0 :(得分:6)

count在您的代码和标准库(在std命名空间中)中定义。使用using namespace std;将整个Standard命名空间拖动到全局命名空间会产生歧义。您应该至少执行以下操作之一:

  • 从全局命名空间中删除using namespace std;要么使用函数中的命名空间,要么只使用您需要的名称,或者在使用它们时限定所有标准名称 仔细选择自己的名字以避免与标准名称冲突
  • 将名称count更改为 * ,以避免含糊不清。
  • 限定对全球count的引用,撰写::count

<小时/> * )特别注意标准库还定义了名称distance

答案 1 :(得分:4)

我猜这是接近你得到的错误:

In function 'int main()':
Line 13: error: reference to 'count' is ambiguous
compilation terminated due to -Wfatal-errors.

使用命名空间std使count引用std :: count,它是标准库中的算法。

http://www.cplusplus.com/reference/algorithm/count/