關於gcc中C語言的兩篇文章

來源:互聯網
上載者:User

初始C語言中的opaque類型:

http://blog.csdn.net/xgbing/article/details/2775426

GCC中運用枚舉定義數組的執行個體:

http://blog.csdn.net/xgbing/article/details/6564979

#include <stdio.h>#include <stdlib.h>#define u32 unsigned intenum uaddr {  MTD_UADDR_NOT_SUPPORTED = 0,    /* data width not supported */  MTD_UADDR_0x0555_0x02AA,  MTD_UADDR_0x0555_0x0AAA,  MTD_UADDR_0x5555_0x2AAA,  MTD_UADDR_0x0AAA_0x0555,  MTD_UADDR_DONT_CARE,        /* Requires an arbitrary address */  MTD_UADDR_UNNECESSARY,      /* Does not require any address */  };  struct unlock_addr {  u32 addr1;  u32 addr2;  }; /*  * I don't like the fact that the first entry in unlock_addrs[]  * exists, but is for MTD_UADDR_NOT_SUPPORTED - and, therefore,  * should not be used.  The  problem is that structures with  * initializers have extra fields initialized to 0.  It is _very_  * desireable to have the unlock address entries for unsupported  * data widths automatically initialized - that means that  * MTD_UADDR_NOT_SUPPORTED must be 0 and the first entry here  * must go unused.  */  static const struct unlock_addr  unlock_addrs[] = {      [MTD_UADDR_NOT_SUPPORTED] = {          .addr1 = 0xffff,          .addr2 = 0xffff      },        [MTD_UADDR_0x0555_0x02AA] = {          .addr1 = 0x0555,          .addr2 = 0x02aa      },        [MTD_UADDR_0x0555_0x0AAA] = {          .addr1 = 0x0555,          .addr2 = 0x0aaa      },        [MTD_UADDR_0x5555_0x2AAA] = {          .addr1 = 0x5555,          .addr2 = 0x2aaa      },        [MTD_UADDR_0x0AAA_0x0555] = {          .addr1 = 0x0AAA,          .addr2 = 0x0555      },        [MTD_UADDR_DONT_CARE] = {          .addr1 = 0x0000,      /* Doesn't matter which address */          .addr2 = 0x0000       /* is used - must be last entry */      },        [MTD_UADDR_UNNECESSARY] = {          .addr1 = 0x0000,          .addr2 = 0x0000      }  };  int main(void){printf("unlock_addrs[MTD_UADDR_0x0AAA_0x0555].addr2=0x%x\n", unlock_addrs[MTD_UADDR_0x0AAA_0x0555].addr2);}

輸出結果:


其實有些利用GCC的特性,對編譯器有興趣可以深入研究!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.