美文网首页
gcc扩展之类型属性

gcc扩展之类型属性

作者: c096c893940b | 来源:发表于2018-02-26 16:06 被阅读0次

引用

  1. gcc5.5 在线手册

属性描述

aligned (alignment)

将结构体的大小与alignment对齐,比如结构体

struct __attribute__((aligned(8))) test
{
    int i;
    char c;
    int j;
};

如果结构体中的变量 i, c , j 都赋值为1。在内存中查看到的layout分别如下:

  • 对齐前为12字节
    1 0 0 0 1 0 0 0 1 0 0 0

  • 对齐后为16字节
    1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0

如果想对齐结构体内某个域,例如在使用netlink时,要求消息的首部必须对齐。可以这样写

struct nlmsg {
    struct __attribute__((aligned(NLMSG_ALIGNTO))){
        struct nlmsghdr nl_hdr;
    };
    struct cn_msg cn_msg;
    enum proc_cn_mcast_op cn_mcast;
};

这样组装出来的消息,头部(nlmsghdr)就是自动对齐的。

相关文章

  • gcc扩展之类型属性

    引用 gcc5.5 在线手册 属性描述 aligned (alignment) 将结构体的大小与alignment...

  • Swift 扩展

    ⚠️ 扩展可以向类型添加新功能,但不能覆盖现有功能。 ✨✨ 扩展属性 ✨✨ 扩展计算属性 ✨✨ 扩展构造方法 ✨✨...

  • Kotlin入门(五):扩展属性,函数(笔记)

    Kotlin中可以扩展原始类型的函数和属性,原始类型称为“接受类型”. 扩展函数 在接收类型上添加扩展函数,语法如...

  • Swift 中的扩展

    扩展的语法 计算属性 扩展可以为现有类型添加实例计算属性以及类计算属性。但不能添加存储属性,也不能为现有的属性添加...

  • IOS开发 UIGesture扩展手势

    本节学习内容 1.UIGesture扩展手势类型 2.UIGesture扩展手势属性 3.UIGesture扩展手...

  • GCC 扩展

    GNU C 允许声明函数、变量和类型的特殊属性,以便手工的代码优化和更仔细的代 码检查。要指定一个声明的属性,在声...

  • Swift extension的妙用

    1.简单介绍extension 在Swift中扩展可以: 添加计算实例属性和计算类型属性; 定义实例方法和类型方法...

  • Swift 扩展(extension)详解

    在Swift中扩展可以: 添加计算实例属性和计算类型属性; 定义实例方法和类型方法; 提供新构造器; 定义下标; ...

  • Add CGFloat property to Category

    给扩展类添加CGFloat类型的属性 IOS中可以使用运行时动态给类添加属性,对象类型的属性添加方法大家都知道 但...

  • Swift - 16.扩展(Extensions)

    本章包含内容: 扩展语法 计算型属性 构造器 方法 下标 嵌套类型 扩展就是向一个已有的类、结构体、枚举类型或者协...

网友评论

      本文标题:gcc扩展之类型属性

      本文链接:https://www.haomeiwen.com/subject/eijyxftx.html