断言、错误处理与数据对齐

一、断言

  断言是一种可用于判断程序设计或运行是否符合开发者预期的逻辑判断式,通常用于进行代码调试,详细信息见文档

  断言分为静态断言和运行时断言,前者在编译时进行处理,后者在运行过程中进行处理。

1.静态断言

  静态断言主要用来约束程序在编译时需要满足的一定要求,使用函数为 static_assert,比如检查计算结果和程序的编译要求

2.运行时断言

  运行时断言可以在运行过程中,判断一些支持程序正常运行的假设性条件是否满足,使用 assert 函数,当宏 NDEBUG 被定义时,assert 失效。比如检查输入参数

二、错误处理

  在 C 语言中,名为 errno 的预处理宏会被展开为一个 int 类型的可修改全局左值,用户可以对该值进行赋值操作。

  在默认情况下, errno 的值为 0 ,在程序的运行过程中,不断调用各种标准库函数,当某个函数的执行产生了不符合预期的结果时,会修改 errno 的值,来传递错误信息。如下图所示:

 

 

   errno 可以通过 strerror 函数得到错误对应的文本。

  C 语言为 errno 添加了本地属性,在不同线程中,都有其专用的 errno 存放错误标识值。

三、对齐

  默认情况下,编译器会采用自然对齐,来约束数据在内存中的起始位置。但也可以用关键字 _Alignas ,来根据自身需求为数据指定特殊的对齐要求,对应的函数是 alignas。alignof 函数可以查看变量需要满足的对齐方式,展开后是关键字 _Alignof。

 

   合理运用自定义对齐方式,可以我们可以优化程序在某些情况下的运行时性能,具体应用参考C 程序性能优化

 

posted @ 2022-02-19 16:03  一只吃水饺的胡桃夹子  阅读(80)  评论(0编辑  收藏  举报