• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            __attribute__ ((packed)) 的作用

            轉載自:http://hi.baidu.com/weipatty/item/b5a9964daab2f1aadf2a9fd4

            最近在看我們的代碼的時候發現聲明類型的時候有 __attribute__ ((packed))的結構體類型聲明,不知道是什么意思,查了下知道是如下含義:

            1. __attribute__ ((packed)) 的作用就是告訴編譯器取消結構在編譯過程中的優化對齊,按照實際占用字節數進行對齊,是GCC特有的語法。這個功能是跟操作系統沒關系,跟編譯器有關,gcc編譯器不是緊湊模式的,我在windows下,用vc的編譯器也不是緊湊的,用tc的編譯器就是緊湊的。例如:

            在TC下:struct my{ char ch; int a;} sizeof(int)=2;sizeof(my)=3;(緊湊模式)

            在GCC下:struct my{ char ch; int a;} sizeof(int)=4;sizeof(my)=8;(非緊湊模式)

            在GCC下:struct my{ char ch; int a;}__attrubte__ ((packed)) sizeof(int)=4;sizeof(my)=5

            2. __attribute__關鍵字主要是用來在函數或數據聲明中設置其屬性。給函數賦給屬性的主要目的在于讓編譯器進行優化。函數聲明中的__attribute__((noreturn)),就是告訴編譯器這個函數不會返回給調用者,以便編譯器在優化時去掉不必要的函數返回代碼。

            GNU C的一大特色就是__attribute__機制。__attribute__可以設置函數屬性(Function Attribute)、變量屬性(Variable Attribute)和類型屬性(Type Attribute)。

            __attribute__書寫特征是:__attribute__前后都有兩個下劃線,并且后面會緊跟一對括弧,括弧里面是相應的__attribute__參數。

            __attribute__語法格式為:

            __attribute__ ((attribute-list))

            其位置約束:放于聲明的尾部“;”之前。

            函數屬性(Function Attribute):函數屬性可以幫助開發者把一些特性添加到函數聲明中,從而可以使編譯器在錯誤檢查方面的功能更強大。__attribute__機制也很容易同非GNU應用程序做到兼容之功效。

            GNU CC需要使用 –Wall編譯器來擊活該功能,這是控制警告信息的一個很好的方式。

            packed屬性:使用該屬性可以使得變量或者結構體成員使用最小的對齊方式,即對變量是一字節對齊,對域(field)是位對齊。

            http://blogguan.blog.sohu.com/109697765.html

            /* __attribute__ ((packed)) 的位置約束是放于聲明的尾部“;”之前 */
            struct str_struct{
                    __u8    a;
                    __u8    b;
                    __u8    c;
                    __u16   d;
            } __attribute__ ((packed));

            /* 當用到typedef時,要特別注意__attribute__ ((packed))放置的位置,相當于:
               * typedef struct str_stuct str;
               * 而struct str_struct 就是上面的那個結構。
            */
            typedef struct {
                    __u8    a;
                    __u8    b;
                    __u8    c;
                    __u16   d;
            } __attribute__ ((packed)) str;

            /* 在下面這個typedef結構中,__attribute__ ((packed))放在結構名str_temp之后,其作用是被忽略的,注意與結構str的區別。*/
            typedef struct {
                    __u8    a;
                    __u8    b;
                    __u8    c;
                    __u16   d;
            }str_temp __attribute__ ((packed));

            http://rmax2005.spaces.live.com/blog/cns!4C2190641D9E68A!311.entry


            posted on 2014-04-17 15:43 楊粼波 閱讀(429) 評論(0)  編輯 收藏 引用

            99久久免费国产精品特黄| 天天爽天天爽天天片a久久网| 久久久久99精品成人片三人毛片 | 久久久久亚洲精品无码蜜桃| 久久精品国产亚洲精品2020| 亚洲国产精品热久久| 亚洲国产精品无码久久久久久曰| 久久精品国产乱子伦| 久久久久久国产精品无码超碰| 7国产欧美日韩综合天堂中文久久久久 | 亚洲国产美女精品久久久久∴| 精品久久人妻av中文字幕| 久久男人AV资源网站| 久久午夜羞羞影院免费观看| 99热成人精品免费久久| 色婷婷久久综合中文久久蜜桃av | 久久久久久久精品成人热色戒 | 久久亚洲精品无码观看不卡| 蜜臀久久99精品久久久久久小说| 久久99精品久久久久久齐齐| 99久久人妻无码精品系列 | 日韩美女18网站久久精品| 99久久99这里只有免费费精品| 亚洲乱码日产精品a级毛片久久| 91久久精品91久久性色| 久久亚洲AV无码精品色午夜| 精品免费久久久久国产一区| 996久久国产精品线观看| 亚洲午夜久久久久久噜噜噜| 2021最新久久久视精品爱| 久久久国产精华液| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久精品国产亚洲AV高清热| 久久大香萑太香蕉av| 色综合久久中文字幕综合网| 久久99精品九九九久久婷婷| 国产亚洲成人久久| 国产精品狼人久久久久影院| 国产成人久久AV免费| 久久99精品国产99久久| 精品久久香蕉国产线看观看亚洲|