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

Unable to define a global variable in C++

本文关键字:定义 全局变量 C++      更新时间:2023-10-16

我是编程新手,一直在愉快地完成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)的问题吗?我需要在全局变量前面加上一些东西才能使用吗?

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

  • 从全局命名空间中删除using namespace std;在函数中使用名称空间,或者只使用所需的名称,或者在使用时限定所有标准名称仔细选择自己的名称,避免与标准名称冲突
  • 将名称count更改为*以避免歧义
  • 将引用限定为全局count,写入::count


*)特别注意,标准库还定义了名称distance

我猜这与您得到的错误很接近:

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/