无法在C++中定义全局变量
Unable to define a global variable in 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)的问题吗?我需要在全局变量前面加上一些东西才能使用吗?
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/
相关文章:
- QT C++中对全局变量的未定义引用
- 跨多个类的全局变量而不会出现重定义错误?
- 包括一个类来定义全局变量参数 c++ :(
- 访问另一个.cpp文件中的.cpp文件中定义的全局变量
- 在主循环外部多个文件上定义全局变量
- 是否可以通过全局变量定义具有可变参数数的函数中的参数数量
- 如何访问从C 编译的动态库中定义的全局变量
- 即使在定义类后也无法在C++中声明全局变量?
- 我们可以通过使用 "dot" 运算符在类之外定义类变量来制作全局变量吗?
- 当在其中定义全局变量时,如何在.cpp中包含 C 样式的 .h
- 在 main() 中定义全局变量
- 我可以在 MFC 应用程序中定义全局变量的位置
- 如何定义全局变量,以便所有类都可以访问/编辑它们
- C++:重新定义全局变量
- c++定义全局变量
- 如何声明和定义全局变量,以便从所有头文件/源文件中正确访问它们
- 在mpi中定义全局变量
- 如何在c++中单独的文件中定义全局变量
- 无法在C++中定义全局变量
- 在头文件中定义全局变量时,重复架构x86_64的符号