当前位置: 首页 > news >正文

深圳布吉网站建设快速建站模板自助建站

深圳布吉网站建设,快速建站模板自助建站,优设网ps教程,许昌网站开发哪家好哈喽 各位读者伙伴大家好 本篇文章讲一下C新特性 alignasalignof 在这之前 我们大家应该先了解一下数据对齐的问题 什么是数据对齐问题呢#xff1f; 以下是两个结构体在内存中的分布图: 为什么要数据对齐呢#xff1f; 首先是CPU 电脑中的CPU#xff08;单核或者多核…哈喽 各位读者伙伴大家好 本篇文章讲一下C新特性 alignasalignof 在这之前 我们大家应该先了解一下数据对齐的问题 什么是数据对齐问题呢 以下是两个结构体在内存中的分布图: 为什么要数据对齐呢 首先是CPU  电脑中的CPU单核或者多核对数据对齐有着迫切的追求  一个好的字节长度 可以让CPU运行起来更加的轻松  不好的对齐只会让程序运行的速度减慢 甚至抛出错误 一向以高性能著称的C语言 早在C11之前就已经出了控制数据对齐的方法  我现在来介绍几个: 使用宏来获取数据对齐长度: #includecstddef #define ALIGNOF(type,result) \ struct type##_alignof_trick \ { \char c; \type member; \ }; \ resultoffsetof(type##_alignof_trick,member); int main() {int x10;ALIGNOF(short, x1);return 0; } 这段代码看起来比较抽象 难以理解 我来介绍一下: 1.cstddef头文件 是C标准库中的头文件其中包含了一些与大小和指针相关的类型和函数定义。主要包括以下内容 std::size_t无符号整数类型用于表示对象的大小或数组的元素数量。std::ptrdiff_t带符号整数类型用于表示指针之间的差值。空指针常量nullptr用于表示空指针。offsetof 宏用于获取结构体成员相对于结构体起始地址的偏移量。 此外该头文件还可能包含其他与指针、数组和内存操作相关的常量、宏和函数定义。 2. type##_alignof_trick type##_alignof_trick 是一个宏定义中的技巧通常用于在不支持 alignof 运算符的旧版本编译器中获取类型的对齐值。这种技巧通过创建一个包含指定类型的成员变量的结构体并使用 offsetof 宏来计算其偏移量从而间接地得到类型的对齐值。 3.结构体部分 结构体里面有有一个字符型成员 c 和待测类型的成员变量 member 4.\符号 反斜杠\被用作换行符的续行符。它允许将一个长的宏定义分成多行以提高可读性。 在C和C中反斜杠后面跟着一个换行符会告诉编译器将该宏定义延续到下一行。这样可以将较长的宏定义分解为更易于阅读和理解的多个部分。 在这个代码中使用了多个反斜杠来将ALIGNOF宏定义拆分成多行并确保每行结尾处没有意外的空格或其他字符。这有助于提高代码的可读性和维护性。 如果不能使用正确的\ 就会报错 C11标准之前获取厂商的对齐长度: 在MSVC中可以使用__alignof关键字来获取数据类型的对齐长度。例如要获取整型变量的对齐长度可以使用以下代码 #include iostreamint main() {std::cout __alignof(int) std::endl;return 0; }GCC 在GCC中可以使用__alignof__关键字来获取数据类型的对齐长度。例如要获取整型变量的对齐长度可以使用以下代码 #include iostreamint main() {std::cout __alignof__(int) std::endl;return 0; }C11 统一控制数据对齐长度的方法了 alignof运算符用于获取给定类型的对齐要求以字节为单位。以下是alignof运算符的使用示例 #include iostreamstruct MyStruct {int a;char b; };int main() {std::cout alignof(int) std::endl; // 输出4 (整型的对齐要求通常是4字节)std::cout alignof(char) std::endl; // 输出1 (字符类型的对齐要求通常是1字节)std::cout alignof(double) std::endl; // 输出8 (双精度浮点数的对齐要求通常是8字节)MyStruct obj;std::cout alignof(MyStruct) std::endl; // 输出4 (结构体MyStruct的对齐要求根据其中成员的最大对齐要求而定)return 0; }注意alignof运算符不能够测量对象的对齐长度 要想测量对象的对齐长度 使用编译器厂商提供的方法 alignas说明符定义结构体对齐长度  说明 结构体类型的对齐字节长度 总是要大于或者等于结构体成员的对齐长度 如果小于则声明失效   以下为代码实例: #include iostreamstruct alignas(16) AlignedStruct {int a;char b; };int main() {alignas(8) int alignedInt; // 将整型alignedInt的对齐要求设置为8字节alignas(double) char alignedCharArray[16]; // 将字符数组alignedCharArray的对齐要求设置为double的对齐要求std::cout alignof(alignedInt) std::endl; // 输出8 (alignedInt的对齐要求)std::cout alignof(alignedCharArray) std::endl; // 输出8 (alignedCharArray的对齐要求)AlignedStruct obj;std::cout alignof(obj) std::endl; // 输出16 (结构体AlignedStruct的对齐要求)return 0; }总结alignas为设置对齐字节长度  alignof为获取字节对齐长度 使用这两个函数 可以人为设置字符对齐字节长度 对CPU的优化达到最大 也可以进行跨平台操作 这在嵌入式linux的应用中显得尤为重要 好了 本篇文章就到这里结束了 在这里 小编向大家推荐一个课程地址: https://xxetb.xetslk.com/s/2PjJ3T
http://www.pierceye.com/news/345706/

相关文章:

  • 外贸网站商城广东省建设协会网站
  • 杭州制作企业公司网站wordpress数据库添加用户
  • 主域名进入网站广告标识标牌制作厂家
  • 网站建设基础流程摘要专题网站建设策划
  • 滁州网站建设电话网站建设与网站优化
  • 慈溪做网站公司哪家好淘宝商城的网站建设
  • 安徽建设厅网站怎么打不开太原网络搭建
  • idea 网站开发最好的免费推广平台
  • 专业排名优化网站怎么建网站教程视频app
  • 全国八大员报名官方网站支付宝小程序开发工具
  • 怎么查看vps网站服务器时间中国建设会计协会网站
  • 门户网站上的广告怎么做深圳服装网站建设
  • 公司网站上线的通知抚州营销型网站建设
  • 中国住房城乡和城乡建设部网站小广告文案
  • 做带字头像的网站wordpress 翻页设置
  • 网站横幅js代码公众号如何申请
  • 找网站建设需要问什么软件物联网平台功能
  • 含山县城市建设有限公司网站成都中高风险地区名单最新
  • 鄂州手机网站建设深圳seo网站设计
  • 网站内容的实现方式建筑设计人才招聘
  • 网站做优化效果怎样iis怎么做网站空间
  • 重庆市建设局网站郑州网站建设哪一家好
  • wordpress指定分类广告金融网站排名优化
  • 美妆网站建设方案陕西网络公司网站建设
  • 北京地铁建设的网站深圳建网站兴田德润可信
  • 平台门户网站建设企业战略规划方案
  • 北京网站备案的地址住房和城乡建设部网站质保金
  • 网络营销自学网站腾讯云服务器cvm
  • 建设旅行网站策划书浙江省职业能力建设处网站
  • 网站项目建设的组织机构wordpress做登录