<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > ARMCC對匿名結(jié)構(gòu)和聯(lián)合的支持

          ARMCC對匿名結(jié)構(gòu)和聯(lián)合的支持

          作者: 時間:2016-12-01 來源:網(wǎng)絡 收藏
          一 對匿名結(jié)構(gòu)和聯(lián)合的支持

          ARMCC
          4.6.1. #pragma anon_unions, #pragma no_anon_unions
          這些編譯指示啟用和禁用對匿名結(jié)構(gòu)和聯(lián)合的支持。

          本文引用地址:http://www.ex-cimer.com/article/201612/324558.htm

          二 對齊


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

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

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

          用sizeof(aa)值為8,而不是5(32位環(huán)境下)。
          這是不是由于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中的規(guī)則,
          pack(1) 表示一字節(jié)對齊。

          bx_bird提到的是在Gcc中的規(guī)則,也表示單字節(jié)對齊。

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

          uint8_t
          __attribute((aligned (4)))

          三 宏定義鏈接符

          #define A(a) TEST_##a

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



          關(guān)鍵詞: ARMCC匿名結(jié)

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();