为了解决相同作用域下的命名问题,在C、C++、C#等语言中,都有命名空间的概念,这是为了防止不同人编写类库发生命名冲突而设计的,命名空间可以使变量、函数名称、类命名作用在本空间内,而其它空间可以使用同样的名称。
参考文章:https://blog.csdn.net/qq_39382769/article/details/102830571
Debug版本为调试版本,Release版本为发行版本。
Debug版本包含调试信息,通过一系列编译选项的配合,编译的结果包含调试信息,而且不做任何优化,以便为开发人员提供强大的应用程序调试能力。
Debug模式下生成两个文件:除了*.exe文件或者*.dll文件之外,还有一个*.pdb文件,该文件记录了代码中断点等调试信息。
Release版本是为用户使用的,一般客户不允许在发布版本上进行调试,所以不保存调试信息,同时它往往进行各种优化,以期达到代码最小和速度最优,为用户的使用提供便利。
Debug程序通常要比Release程序要慢,尤其是处理视频方面Release要比Debug快很多,在Release模式对程序进行调试的时候经常遇到变量虽然初始化了,但是在查看其值的时候却发现是一个随机值而不是初始化值,有时候对变量进行监视的时候,会出现找不到变量的情况,原因大致如下:
Debug跟Release在初始化时所做的操作是不同的,Debug是将每个字节都赋值为0xcc,而Release的赋值接近于随机,如果你的程序中某个变量没有初始化就被引用,就很有可能出现异常;比如控制变量异常将导致程序流程不一致,用作数组下标将会使得程序崩溃,所以在声明变量后马上对其初始化一个默认的值是最简单有效的方法,在Debug模式下可能会忽略而不被察觉,debug下数组越界也大多不会有错,在Release中就暴露出来了。
只有Debug模式下才能设置断点,单步执行,使用TRACE/ASSERT等调试输出语句,Release不包含任何调试信息,所以体积小,运行速度快。
这种函数会自动为内联函数,这种函数在函数调用的地方编译阶段都会进行代码替换。