新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 在嵌入式軟件編程中深入理解關鍵字

        在嵌入式軟件編程中深入理解關鍵字

        作者: 時間:2009-11-17 來源:網絡 收藏


        引 言
        計算機編程語言的就好比是它的靈魂,只有了它們的含義才能編寫出優秀的代碼。C語言以其簡潔、高效和強大等特性成為的首選語言,但是某些,例如const、static、extern和volatile等,在不同的場合具有不同的含義,而且某些用法晦澀難懂,為此本文詳細介紹這些的用法及其背后的原理。

        本文引用地址:http://www.104case.com/article/152278.htm


        1 const
        const限定的對象表示編譯器可以將它放在只讀存儲器中,也就意味著在對其進行初始化之后就不能改變它的值。根據const使用的不同場合,大致可以分為三種情況,其一限定普通變量,其二限定函數參數,其三限定指針變量。
        第一和第二種情況最為簡單,語句①和語句②分別展示了它的用法。語句①定義了一個值為10的整型常量。語句②中的const表示在函數體中不能修改src指向的區域中的數據,這與函數的拷貝功能相對應,只做它應該做的事情而不應該有其他副作用,編譯器可以利用這些信息進行適當的優化。
        ①const int i=10;
        ②void*memcpy(void * dst,const void * src,size_t size);
        ③const int *ptr;
        ④int const *ptr;
        ⑤int*const ptr;
        ⑥int const*cons ptr;
        第3種情況最為復雜,雖然只是const位置不同,但是卻可能具有完全不同的意義。一般,一個聲明語句由聲明說明符(decl-specifier)和一系列聲明子(declarator)兩部分組成,而且聲明說明符中的符號可以以任何次序出現。聲明的第一步是定位說明符和聲明子的邊界。這很容易:所有的說明符都是關鍵字或者類型名,因此說明符終止于第一個不是以上類型之一的符號。例如,在語句③和④中第一個既不是關鍵字也不是類型名的符號是“*”,即聲明說明符分別為const.int和int const,由于聲明說明符中的符號可以以任意次序出現,因此語句③和④的含義是相同的。
        為了迅速弄清語句表達的含義,參考文獻[1]介紹了一種簡便的方法,其要點就是“逆序讀出定義”,如圖1所示。

        2 static與extem
        static的含義隨著出現位置(全局變量還是局部變量)和修飾對象(變量還是函數)的不同而有很大的差別。下面各條目中的模塊指的是一個源文件或者一個翻譯單元:

        ①位于函數體中的靜態變量在多次函數調用間會維持其值。
        ②位于模塊內(但在函數體外)的靜態變量可以被模塊內的所有函數訪問,但不能被模塊外其他函數訪問。也就是說,它是一個本地的全局變量。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 徐汇区| 兴安盟| 石台县| 理塘县| 淮阳县| 邮箱| 克什克腾旗| 永嘉县| 竹山县| 高要市| 城固县| 南投县| 五原县| 准格尔旗| 哈尔滨市| 大悟县| 上饶县| 平原县| 无锡市| 准格尔旗| 玛沁县| 宜昌市| 健康| 普宁市| 新蔡县| 邢台市| 东莞市| 铁岭县| 昭平县| 南皮县| 万年县| 吴旗县| 杨浦区| 乐业县| 延川县| 馆陶县| 鄂伦春自治旗| 荥经县| 石屏县| 隆子县| 云林县|