zoukankan      html  css  js  c++  java
  • 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 (本群没人,刚刚建立 -_-!!! )
  • 相关阅读:
    Docker 介绍
    Docker 教程
    Python 删除文件与文件夹
    Python 读文件
    Python 打开文件(File Open)
    Python 异常处理(Try...Except)
    什么是拜占庭将军问题
    智能合约语言 Solidity 教程系列7
    给代币添加高级功能-代币管理、增发、兑换、冻结等
    一步步教你创建自己的数字货币(代币)进行ICO
  • 原文地址:https://www.cnblogs.com/Mj-NaijAm/p/13601418.html
Copyright © 2011-2022 走看看