<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 11.1.?標準 C 類型的使用 盡管大部分程序員習慣自由使用標準類型, 如 int 和 long, 編寫設備驅動需要一些小心來避免類型沖突和模糊的 bug. 這個問題是你不能使用標準類型, 當你需要"一個 2-字節 填充者"或者"一個東西來代表一個4-字節 字串", 因為正常的 C 數據類型在所有體系上不是相同大小. 為展示各種 C 類型的數據大小, datasize 程序已包含在例子文件 misc-progs 目錄中, 由 O' Reilly's FTP 站點提供. 這是一個程序的樣例運行, 在一個 i386 系統上(顯示的最后 4 個類型在下一章介紹): ~~~ morgana% misc-progs/datasize arch Size: char short int long ptr long-long u8 u16 u32 u64 i686 1 2 4 4 4 8 1 2 4 8 ~~~ 這個程序可以用來顯示長整型和指針在 64-位 平臺上的不同大小, 如同在不同 Linux 計算機上運行程序所演示的: ~~~ arch Size: char short int long ptr long-long u8 u16 u32 u64 i386 1 2 4 4 4 8 1 2 4 8 alpha 1 2 4 8 8 8 1 2 4 8 armv4l 1 2 4 4 4 8 1 2 4 8 ia64 1 2 4 8 8 8 1 2 4 8 m68k 1 2 4 4 4 8 1 2 4 8 mips 1 2 4 4 4 8 1 2 4 8 ppc 1 2 4 4 4 8 1 2 4 8 sparc 1 2 4 4 4 8 1 2 4 8 sparc64 1 2 4 4 4 8 1 2 4 8 x86_64 1 2 4 8 8 8 1 2 4 8 ~~~ 注意有趣的是 SPARC 64 體系在一個 32-位 用戶空間運行, 因此那里指針是 32 位寬, 盡管它們在內核空間是 64 位寬. 這可用加載 kdatasize 模塊(在例子文件的 misc-modules 目錄里)來驗證. 這個模塊在加載時使用 printk 來報告大小信息, 并且返回一個錯誤( 因此沒有必要卸載它 ): ~~~ kernel: arch Size: char short int long ptr long-long u8 u16 u32 u64 kernel: sparc64 1 2 4 8 8 8 1 2 4 8 ~~~ 盡管在混合不同數據類型時你必須小心, 有時有很好的理由這樣做. 一種情況是因為內存存取, 與內核相關時是特殊的. 概念上, 盡管地址是指針, 內存管理常常使用一個無符號的整數類型更好地完成; 內核對待物理內存如同一個大數組, 并且內存地址只是一個數組索引. 進一步地, 一個指針容易解引用; 當直接處理內存存取時, 你幾乎從不想以這種方式解引用. 使用一個整數類型避免了這種解引用, 因此避免了 bug. 因此, 內核中通常的內存地址常常是 unsigned long, 利用了指針和長整型一直是相同大小的這個事實, 至少在 Linux 目前支持的所有平臺上. 因為其所值的原因, C99 標準定義了 intptr_t 和 uintptr_t 類型給一個可以持有一個指針值的整型變量. 但是, 這些類型幾乎沒在 2.6 內核中使用.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看