在用递归写八皇后时,定义了一个全局变量count,结果出现故障例如以下:提示全局变量不明白

最后发如今实现文件.cpp中。我使用了using  namespace std;

解决方法:

1.使用count 的地方改成 ::count 替代(由于std命名空间下也有 std::count ,编译器不确定此处是::count 还是std::count,所以会不明白)

2.凝视掉这个命名空间

3.或者改用 :

using std::cout;


using std::endl;

using std::cin;

思考总结:

一、using namespace std 思考

非常多时候使用这句代码不是一个好的办法(更重要的是:最好不要在头文件里使用)

好的习惯是使用std::cout以及std::cin

C++标准程序库中的全部标识符都被定义于一个名为std的namespace中, using namespace std 是将全部的系统定义的标识符导入,由于标准库非常的庞大,所程序猿在选择的类的名称或函数名时就非常有可能和标准库中的某个名字同样,也就是说你自定义的东西(变量,方法。类等)不能和系统中的这些标识符重名,否则将出现命名冲突的错误。

二、c++ 有关全局变量的声名定义

1.一般最好把全局变量声明在cpp文件里(假设在.h文件里定义的话,多层包括可能会引起反复定义的错误)

2.cpp中定义好了之后,能够在.h文件里利用 externkeyword进行 声明(extern 声明表示在此处引入外部定义变量的声明,而不是在本编译单元中再声明一个同名的局部变量)

然后其它文件要使用这些变量的时候,仅仅要#include 这个头文件就能够了。并且不会引起反复定义的错误

三、静态全局变量、全局常量(const)、普通全局变量比較:

1.静态全局变量:即使用static修饰的全局变量。他不能使用extern进行引入声明。即extern与static不能够一起使用;并且static全局变量与普通全局变量有非常大不同。

static修饰的全局变量的作用域仅仅是其本身所在的编译单元(在本编译单元内更改生效),在其它单元中使用时。该变量会有新的内存地址。也就是说,每个使用它的编译单元都给它开辟了单独的空间,并把它的初始值复制过来。这样假设某个单元中对它进行了改动,那么多个编译单元中它的值就可能不一样了

注意:

static修饰的全局变量声明与定义是一体的,在头文件里声明了static全局变量,同一时候也是定义了它,不像普通的全局变量是分开的。

多个编译单元都包括static全局变量所在的头文件。不会引起重定义错误。由于每一个编译单元都开辟了新的空间存储它;

2.const全局变量:const全局变量使用起来与普通全局变量一样。在.cpp中定义并赋初值,在.h头文件里用extern进行声明,然后再须要使用的地方包括.h就可以,在多个编译单元中其内存地址也不同(这一点与static全局变量类似)。可是因为是常量,不能改动其值。所以即使内存地址不一样也没影响,值都一样。

还没用到。參考:http://blog.csdn.net/jiadebin890724/article/details/40509333

四、命名空间的使用

未完待续.....

Error:全局变量不明白(using namespace std 与全局变量的冲突)的更多相关文章

  1. C++ 全局变量不明确与 using namespace std 冲突

    写了个汉诺塔,使用全局变量count来记录步数,结果Error:count不明确 #include <iostream> using namespace std; ; void hanoi ...

  2. #include<iostream.h>与#include<iostream> using namespace std的区别

    所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中.  一 :<iostream>和<iostream.h ...

  3. 关于C++中using namespace std

    原文链接:http://www.kuqin.com/language/20080107/3532.html <iostream>和<iostream.h>是不一样,前者没有后缀 ...

  4. (C++)浅谈using namespace std

    1.<iostream>和<iostream.h> 在你的编译器include文件夹里面可以看到,二者是两个文件,里面的代码是不一样的. 后缀为.h的头文件c++标准已经明确提 ...

  5. using namespace std 是什么意思?

    摘录CSDN上面大牛的回答简要意思就是使用标准库,想知道更清楚的继续读下面的. using   namespace   std   意思:   using   和namespace都是C++的关键词. ...

  6. 【转】关于“using namespace std”

    对于一个存在着标准输入输出的C++控制台程序,一般会在#include <iostream>的下一行发现一句话,using namespace std.这句话其实就表示了所有的标准库函数都 ...

  7. 【学习笔记】using namespace std 的作用

    C++编程时几乎每次都敲上using namespace std;但这行代码究竟有什么作用呢? C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. 早些的编码将标准库功能定 ...

  8. [转载]C++之using namespace std 详解与命名空间的使用

    来源:https://blog.csdn.net/Bruce_0712/article/details/72824668 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识 ...

  9. using namespace std 和 using std::cin

    相较using std::cin使用using namespace std不会使得程序的效率变低,或者稳定性降低,只是这样作会将很多的名字引入程序,使得程序员使用的名字集合变小,容易引起命名冲突. 在 ...

随机推荐

  1. 最优化方法系列:Adam+SGD—>AMSGrad

    自动调参的Adam方法已经非常给力了,不过这主要流行于工程界,在大多数科学实验室中,模型调参依然使用了传统的SGD方法,在SGD基础上增加各类学习率的主动控制,以达到对复杂模型的精细调参,以达到刷出最 ...

  2. MySql(五)select排序查询

    举个栗子/**查询员工信息,要求工资按照从高到低进行排序(默认升序)**/SELECT * FROM employees ORDER BY salary ASC;/**方法2:**/SELECT * ...

  3. CAD使用SetxDataLong写数据(网页版)

    主要用到函数说明: MxDrawEntity::SetxDataLong 写一个long扩展数据,详细说明如下: 参数 说明 [in] BSTR val 字符串值 szAppName 扩展数据名称 n ...

  4. Python字符的转义

    参考原文 廖雪峰Python教程 字符的转义 字符串是以单引号' 或双引号" 括起来的任意文本,比如'abc',"xyz".''或""本身只是一种表示 ...

  5. php第二十五节课

    详情删除 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  6. dorado 7 使用总结

    最近项目上需要,使用了dorado 7 ,总体感觉还可以,快速开发很方便,然而在方便的同时,难免有些太过繁琐,很多东西都封装了起来,会造成很多不便.因此快速开发的项目可以使用,其它的不推荐.现在打算将 ...

  7. HTML元素以及HTML元素的分类

    HTML元素以及HTML元素的分类 html标签又叫做html元素,它分为块级元素和内联元素(也可以叫做行内元素),都是html规范中的概念 块级元素 含义:块级元素是指本身属性为display:bl ...

  8. Address already in use: JVM_Bind:8080错误的解决办法

    解决办法:先到命令行查找8080端口号被那个占用,输入后面的命令:netstat -ano 查到 然后到任务管理器把PID为20904的进程给结束掉,就OK了 -------------------- ...

  9. TestNG多线程测试-注解方式实现

    用@Test(invocationCount = x,threadPoolSize = y)声明,invocationCount表示执行次数,threadPoolSize表示线程池大小. packag ...

  10. 微信小程序开发过程中tabbar页面显示的相关问题及解决办法!

    在微信小程序的开发过程中如果有使用过tabbar的同学,我相信一定会遇到一些困扰.为什么有些时候代码中明明已经在app.json里面增加了tabbar,可以页面中就是不显示呢?可不可以有些页面显示ta ...