<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        ARMCC對匿名結構和聯合的支持

        作者:佚名   來源:本站原創   點擊數:  更新時間:2014年03月14日   【字體:

        一 對匿名結構和聯合的支持

         

        ARMCC
        4.6.1. #pragma anon_unions, #pragma no_anon_unions
        這些編譯指示啟用和禁用對匿名結構和聯合的支持。

         

        二 對齊


        可以在需要進行取消對齊的結構前用
        #pargma pack(1)
        以該結構后用
        #pargma pack()
        即可。

        可以同時包括多個結構,也可以整個文件都包涵進去。
        gcc會自動尋找該定義,并取消默認的對齊方式。這種方法還是比較好的,比在gcc參數中加選項要好,可以不影響系統的庫方式 

         

        如下:
        struct
        {
        char a;
        int b;
        }aa;

        用sizeof(aa)值為8,而不是5(32位環境下)。
        這是不是由于GCC的對齊機制引起的?如何disable掉

        1.
        struct irq_routing_options {
        u16 size;
        struct irq_info *table;
        u16 segment;
        } __attribute__((packed));

        2.
        #pragma pack(1)
        struct ... {
        ...
        }...;
        #pragma pack()
           

        在MS-VC中的規則,
        pack(1) 表示一字節對齊。

        bx_bird提到的是在Gcc中的規則,也表示單字節對齊。

        例如使用
        struct my_s
        {
        char a;
        int b;
        }__attribute__((packed));
        struct my_s aa;
        就可以使aa變量只占用5個字節而不是8個字節。

        uint8_t
        __attribute((aligned (4)))

         

        三 宏定義鏈接符

         

        #define   A(a)   TEST_##a

        #define A(b)  == TEST_b
        #define A(1)  == TEST_1
         

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮