<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                #### 23. 頭文件 頭文件是擴展名為 **.h** 的文件,包含了 C 函數聲明和宏定義,被多個源文件中引用共享。有兩種類型的頭文件:程序員編寫的頭文件和編譯器自帶的頭文件。 在程序中要使用頭文件,需要使用 C 預處理指令 **#include** 來引用它。前面我們已經看過 **stdio.h** 頭文件,它是編譯器自帶的頭文件。 引用頭文件相當于復制頭文件的內容,但是我們不會直接在源文件中復制頭文件的內容,因為這么做很容易出錯,特別在程序是由多個源文件組成的時候。 A simple practice in C 或 C++ 程序中,建議把所有的常量、宏、系統全局變量和函數原型寫在頭文件中,在需要的時候隨時引用這些頭文件。 **引用頭文件的語法** 使用預處理指令 **#include** 可以引用用戶和系統頭文件。它的形式有以下兩種: ~~~ #include <file> ~~~ 這種形式用于引用系統頭文件。它在系統目錄的標準列表中搜索名為 file 的文件。在編譯源代碼時,您可以通過 -I 選項把目錄前置在該列表前。 ~~~ #include "file" ~~~ 這種形式用于引用用戶頭文件。它在包含當前文件的目錄中搜索名為 file 的文件。在編譯源代碼時,您可以通過 -I 選項把目錄前置在該列表前。 **引用頭文件的操作** **#include** 指令會指示 C 預處理器瀏覽指定的文件作為輸入。預處理器的輸出包含了已經生成的輸出,被引用文件生成的輸出以及 **#include** 指令之后的文本輸出。例如,如果您有一個頭文件 char\_manger.h,如下: ~~~ char *test(void); ~~~ 和一個使用了頭文件的主程序 char\_manager.c,如下: ~~~ #include "char_manger.h" int x; int main (void) { puts (test ()); } ~~~ 編輯器會看到如下的代碼信息: ~~~ char *test (void); int x; int main (void) { puts (test ()); } ~~~ **只引用一次頭文件** 如果一個頭文件被引用兩次,編譯器會處理兩次頭文件的內容,這將產生錯誤。為了防止這種情況,標準的做法是把文件的整個內容放在條件編譯語句中,如下: ~~~ #ifndef HEADER_FILE #define HEADER_FILE the entire header file file #endif ~~~ 這種結構就是通常所說的包裝器 **#ifndef**。當再次引用頭文件時,條件為假,因為 HEADER\_FILE 已定義。此時,預處理器會跳過文件的整個內容,編譯器會忽略它。 **有條件引用** 有時需要從多個不同的頭文件中選擇一個引用到程序中。例如,需要指定在不同的操作系統上使用的配置參數。您可以通過一系列條件來實現這點,如下: ~~~ #if SYSTEM_1 # include "system_1.h" #elif SYSTEM_2 # include "system_2.h" #elif SYSTEM_3 ... #endif ~~~ 但是如果頭文件比較多的時候,這么做是很不妥當的,預處理器使用宏來定義頭文件的名稱。這就是所謂的**有條件引用**。它不是用頭文件的名稱作為 **#include** 的直接參數,您只需要使用宏名稱代替即可: ~~~ #define SYSTEM_H "system_1.h" ... #include SYSTEM_H ~~~ SYSTEM\_H 會擴展,預處理器會查找 system\_1.h,就像 **#include** 最初編寫的那樣。SYSTEM\_H 可通過 -D 選項被您的 Makefile 定義
                  <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>

                              哎呀哎呀视频在线观看