• 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(表达式) 变量名 = 初始化值;

    学如逆水行舟,不进则退。 博客园技术交流群 群 号:1073255314 (本群没人,刚刚建立 -_-!!! )
  • 相关阅读:
    IIS7 配置PHP服务器
    WebAPI Post请求多参数处理方案
    Mssql 跨域查询
    sql 给数据库表 字段 添加注释
    log4net配置文件
    搭建svn服务器小结
    Django测试开发-30- xadmin模板中class Meta:和def __str__(self):的应用
    Django测试开发-29- xadmin模板中详情页面布局form_layout详解
    Django测试开发-28- xadmin模板中related_name和_set()用法
    Django测试开发-27- xadmin模板中注册增加Student和Teacher,Card及CardDetail表
  • 原文地址:https://www.cnblogs.com/Mj-NaijAm/p/13601418.html
Copyright © 2020-2023  润新知