c++之 断言 Volatile namespace aotu简介

断言:assert

 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。

static_assert(表达式,“输出文本”)

编译期检查,如果constexpr为假 则输出编译时错误,错误信息为字符串内容

 

 

volatile 

 

使用 volatile 变量类型  变量名 =初始化数值;

 

应用场合:多线程编译

 

编译器进行强制 I/O 寻址,而非读取寄存器的值。
一般情况下,连续使用的变量,编译器会先把数据读出来,并且保存到寄存器里,
使用的时候,直接读取寄存器里的数据,这样处理速度会快一点,
但是,有些时候,比如实时读取按键值,或者其它要求比较实时的数据,
就不能使用寄存器了,必须要用到 volatile 关键字了

 

 

命名空间 (namespace)

 

使用 namespace 空间命名{ 函数表达式 }

 

用来解决名字长且难以理解的问题,还有重名问题
设计工具可以使用命名空间,使开发人员在他们的代码中浏览和引用类型更为方便。单个程序集可以包含其分层名称具有不同命名空间根的类型,而且逻辑命名空间根可以跨多个程序集。命名空间在逻辑设计时提供命名方便,而程序集在运行时确定类型的命名范围。

 

凡是全局作用域的东西都可以房子命名空间中

 

命名空间可以嵌套,可以拆分  可以取别名

 

取别名比如:namespace JJJ (前面是别名)= MJ(后面是命名空间的名字)

 

 

 

可以在命名空间中嵌套其他命名空间,为类型创建层次结构。

 

Using namespace MJ 当前作用域使用指定命名空间

 

凡可以声名的地方都可以放using语句using MJ::fun;   

 

::fun;使用全局作用域的名字

 

注意不允许在另一个嵌套的命名空间中声明多部分的命名空间。

 

 

 

另外顺便提一下,命名空间也并没有解决所有问题,它只是使发生命名冲突的机会变小了许多而已。

 

 

 

Auto

 

使用 auto 变量名 = 任何表达式;

 

仅在语句块内部使用,初始化可为任何表达式,其特点是当执行流程进入该语句块的时候初始化可为任何表达式。

 

Auto不能做为函数参数来传递

 

 

Decltype

 

表达式不会被应用,只会被推导类型,用法为decltype(表达式) 变量名 = 初始化值;

 

posted @ 2020-09-02 14:15  特权E5  阅读(166)  评论(0编辑  收藏  举报